Windows下搭建MySql Master-Master Replication

时间:2022-12-23 04:39:52

1.首先下载最新版的MySql Server (http://dev.mysql.com/downloads/windows/installer/)

2.安装MySql Server到两台机器上

MySql 1: 192.168.0.104 (以下简称104)

MySql 2: 192.168.0.103  (以下简称103)

3. 配置Mysql Server启动Binary Logging.
在104的my.ini文件(一般在C:\ProgramData\MySql\MySql Server 5.6\my.ini)中添加如下配置信息

[mysqld]
log-bin=mysql-bin
server-id=1

103的my.ini文件中添加如下配置信息

[mysqld]
log-bin=mysql-bin
server-id=2

4.重启MySql

5.为Replication创建User,并赋予权限

mysql> CREATE USER 'repl' @'%' identified by 'repl';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

6. 查看两台Mysql Server当前bin log的位置(因为我们只需要同步两个server从当前状态之后的操作)

6.1 分别在两台机器上执行如下命令:

FLUSH TABLES WITH READ LOCK;

SHOW MASTER STATUS;

103会得到如下结果:

Windows下搭建MySql Master-Master Replication

104会得到如下结果:

Windows下搭建MySql Master-Master Replication

图中File表示当前的binary log文件名,Position是表示Binary log文件的当前位置,呆会replication应该是从这个位置开始。

7. 释放Lock

在两台机器上执行如下命令:Unlock Tables.让两台MySql可以正常进行数据库操作

8,设置Slave Replication.

8.1 启动104上的slave replication.

8.1.1 执行 Stop Slave

8.1.2 执行如下命令:

CHANGE MASTER TO  MASTER_HOST='192.168.0.103', MASTER_USER='repl', MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=411;

8.1.3 执行Start Slave

8.1.4 查看slave的状态,执行Show Slave Status\G;

Windows下搭建MySql Master-Master Replication

 

8.2 启动103上的slave replication.

8.2.1 执行 Stop Slave

8.2.2 执行如下命令:

CHANGE MASTER TO  MASTER_HOST='192.168.0.104', MASTER_USER='repl', MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=411;

8.2.3 执行Start Slave

8.2.4 查看slave的状态,执行Show Slave Status\G;

Windows下搭建MySql Master-Master Replication

 

9.测试replication效果

9.1 在104上执行:

mysql> create database repltest;

mysql> use repltest;

mysql> create table person(id int,name varchar(255));

mysql> insert into person values(1,’jensen’);

9.2在103上执行:

mysql> use repltest;

mysql> select * from person; 验证在104上插入的记录已经同步现103上

Windows下搭建MySql Master-Master Replication

9.3 在103上插入记录

mysql> insert into person values(2,’jensen’);

9.4 在104上验证结果

mysql> select * from person;

Windows下搭建MySql Master-Master Replication

10. 对于自增ID列,两台Server同步时会因为值一样而造成冲突。解决方案:利用mysql的auto_increment_increment和auto_increment_offset来限定每台server生成的ID限定在一定范围内(如:104生成奇数ID,103生成偶数ID)