单台windows搭建mysql主从机备份

1.在一台window上搭建两个MySQL实例

1.1.下载 MySQL 5.6

下载地址:http://download.csdn.net/download/zzu_wang/8708049

注意,一定要下载 5.6 版本,5.7版本会出现各种各样奇怪的问题。

1.2.建立对应目录

在你喜欢的位置(我的是D:\WorkSpace\mysql\)建立两个文件夹,分别叫 mysql5601 和 mysql5602。将刚才下载到的 zip 文件分别复制到这两个文件夹中解压。

解压完成之后应该是这个样子的:

1.3.修改响应配置文件

分别打开 mysql5601 和 mysql5602 ,修改 my-default.ini 文件

打开 my-default.ini 文件,修改下图中标记的位置

basedir 为 mysql 的解压目录,datadir 为 basedir\data,两个实例的 port 分别设置为 3306 和 3307,server_id 分别设置为 1 和 2。

mysql5601:

1
2
3
4
basedir = D:\WorkSpace\mysql\msql5601
datadir = D:\WorkSpace\mysql\msql5601\data
port = 3306
server_id = 1

mysql5602:

1
2
3
4
basedir = D:\WorkSpace\mysql\msql5602
datadir = D:\WorkSpace\mysql\msql5602\data
port = 3307
server_id = 2

注意,只修改刚才提到的地方就好,其他地方暂时先不用管,后面会有提到。

1.4.启动 MySQL 服务

在 windows 搜索框中搜索 cmd,得到结果如下图所示:

按下 Ctrl + Shift + Enter,以管理员身份进入 cmd,进入之后,如下图所示:

进入到 D:\WorkSpace\mysql\msql5601\bin 目录下,输入:

1
mysqld install MySQL1 --defaults-file="D:\WorkSpace\mysql\msql5601\my-default.ini" :

因为我已经安装过了,所以会显示 The service already exists! ,第一次安装应该显示 Service successfully installed.

【MySQL1】是服务的名称,安装成功后,在 windows 搜索里输入【服务】,可以在服务中找到它。

安装成功后,输入 net start MySQL1,启动这个服务:

然后用同样的方法启动另一个服务,这回叫MySQL2:

进入到 D:\WorkSpace\mysql\msql5602\bin 目录下,输入:

1
mysqld install MySQL2 --defaults-fil e= "D:\WorkSpace\mysql\msql5602\my-default.ini"

安装成功后,输入 net start MySQL2,启动这个服务,得到结果如下图所示:

两个服务都跑起来之后,我们就可以进入下一步:实现主从备份了。

2.搭建主从备份

2.1.在两个 MySQL 实例创建数据库

我们以 mysql5601 中的实例作为主库,以 mysql5602 中的实例作为从库。

在这两个数据库中各自创建一个叫做 test 的库作为用来同步的库。具体操作如下:

进入 D:\WorkSpace\mysql\msql5602\bin 目录下,输入 mysql -uroot -proot -P3306

在这个命令中,前一个小写的 p 是密码(password)的 p,后一个大写的 P 是端口(Port)的 P。

然后输入:create database test;

我的因为已经建立过了,所以会报出 database exists。

输入:show databases;

显示现有的 database,我们可以看到,test已经在里面了。

接下来我们建立从机的数据库,打开一个cmd,进入 D:\WorkSpace\mysql\msql5602\bin 目录下,输入 mysql -uroot -proot -P3307

然后输入:create database test;

这样两个数据库就建立好了。

2.2.修改主库配置文件

打开 mysql5601,修改 my-default.ini 文件,在其中添加如下内容:

1
2
3
server-id=1 #服务器 id
log-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin #二进制文件存放路径
binlog-do-db=test1 #待同步的数据库

添加完后,我们的 my-default.ini 文件就会像下面这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\WorkSpace\mysql\msql5601
datadir = D:\WorkSpace\mysql\msql5601\data
port = 3306
server_id = 1
log-bin=D:\WorkSpace\mysql\msql5601\mysql-bin #二进制文件存放路径
binlog-do-db=test #待同步的数据库
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Windows 搜索【服务】,重启 MySQL1 服务。

重启之后,你会看到 D:\WorkSpace\mysql\msql5601 目录下多出了两个文件(因为我重启过三遍所以多出来四个):

2.3.给要连接的从服务器设置权限

打开一个cmd,进入 D:\WorkSpace\mysql\msql5602\bin 目录下,输入 mysql -uroot -proot -P3306

进入 mysql 命令行模式,输入

1
grant replication slave,reload,super on *.* to slave@10.0.76.192 identified by 'root';

给主机10.0.76.192添加权限,用户名:slave,密码:root;

注意,10.0.76.192是我的 ip 地址,这个地址需要改成你自己的 ip 地址(如果不是一台机器则要改成从机的 ip 地址)。查询 ip 地址的方法很简单,打开 cmd,输入 ipconfig 即可。

2.4.输入命令 show master status;

找到 File 和 Position 的值记录下来,这些值后面会用到。

2.5.修改从库配置文件

打开mysql5602,修改my-default.ini文件:

1
2
server-id=2 #服务器 id ,不能和主服务器一致
replicate-do-db=test1 #待同步的数据库

修改后的 my-default.ini 文件如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\WorkSpace\mysql\msql5602
datadir = D:\WorkSpace\mysql\msql5602\data
port = 3307
server_id = 2
replicate-do-db=test #待同步的数据库
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

重启 MySQL2 服务。

2.6.修改从库对主库的连接参数

打开一个cmd,进入 D:\WorkSpace\mysql\msql5602\bin 目录下,输入 mysql -uroot -proot -P3307

进入 mysql 命令行模式,输入:

1
change master to master_host='10.0.76.192',master_user='slave',master_password='root', master_log_file='mysql-bin.000003',master_log_pos=120;

注意:这里输入的 mysql-bin.000003 和 120 请替换为步骤2.4中查询出来的值,master_host 替换为你自己的 ip。

2.7.启动 salve 线程

输入:start slave;

然后输入:show slave status\G (没有分号)

看是否有以下两行:

1
2
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

这两个指标非常重要,任意一行为No都不能正常运行。我就曾经遇到了下面的这种问题。

1
[ERROR] Slave I/O: error connecting to master 'slave@10.0.76.192:3306:3306' - retry-time: 60 retries: 6, Error_code: 2005

解决方法很简单,重启以下 slave 的服务就可以了。

2.8.测试同步

打开两个 cmd ,进入 D:\WorkSpace\mysql\msql5602\bin 目录下,分别输入:

1
2
mysql -uroot -proot -P3306(主机)
mysql -uroot -proot -P3307(从机)

在主机上输入:use test;

转到 test 数据库,然后输入:create table table1;

新建一个名为 table1 的表。然后输入:show tables;

得到结果如下图所示:

上面的操作只是在主机上的 test 数据库中建立了一张名为 table1 的表。

接下来我们进入从机的 cmd,输入:use test;

然后输入:show tables;

得到结果如下图所示:

可以看到,两个数据库的数据已经开始自动同步了。

3.参考链接

windows下mysql主从同步

http://www.cnblogs.com/xiaochangwei/p/4824355.html

mysql (master/slave)复制原理及配置

http://blog.csdn.net/mer1234567/article/details/7405775

window下一台PC机器上安装多个mysql的方法

http://blog.csdn.net/zfqzpp/article/details/13630905

mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结

http://www.jb51.net/article/27220.htm

slave have equal MySQL Server UUIDs原因及解决

http://www.linuxidc.com/Linux/2015-02/113564.htm

4.操作系统:windows10