Mysql主从双向同步
-
Mysql服务器要求
-
主从服务器Mysql版本一致
-
配置步骤
-
服务器环境
A服务器:172.16.10.181
B服务器:172.16.10.131
-
初始化数据库
分别在A、B服务器上新建数据库,名称为tongbu,在数据库tongbu中新建数据表test
3)服务器配置
-
编辑A服务器(172.16.10.181) 配置文件 /etc/my.cnf
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=1 #[必须]服务器唯一ID,默认是1
binlog-do-db=tongbu #需要同步的库
replicate-do-db=tongbu #需要同步的库
#replicate-ignore-table=tongbu.table_name #不需要同步的表
binlog-ignore-db = information_schema #不需要同步的库
binlog-ignore-db = performance_schema #不需要同步的库
binlog-ignore-db = rmw #不需要同步的库
binlog-ignore-db = mysql #不需要同步的库
-
在A服务器(172.16.10.181)上建立帐户并授权slave
#/usr/local/mysql/bin/mysql -uroot -p
mysql>GRANT REPLICATION SLAVE ON *.* to 'tongbu'@'%' identified by '123456'; #一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如172.16.10.131,加强安全。
Mysql>flush privileges; #刷新权限
-
查询A服务器(172.16.10.181)master的状态
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
-
编辑B服务器(172.16.10.131) 配置文件 /etc/my.cnf
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=2 #[必须]服务器唯一ID
binlog-do-db=tongbu #需要同步的库
replicate-do-db=tongbu #需要同步的库
#replicate-ignore-table=tongbu.table_name #不需要同步的表
binlog-ignore-db = information_schema #不需要同步的库
binlog-ignore-db = performance_schema #不需要同步的库
binlog-ignore-db = rmw #不需要同步的库
binlog-ignore-db = mysql #不需要同步的库
-
在B服务器(172.16.10.131)上建立帐户并授权slave
#/usr/local/mysql/bin/mysql -uroot -p
mysql>GRANT REPLICATION SLAVE ON *.* to 'tongbu'@'%' identified by '123456'; #一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如172.16.10.181,加强安全。
Mysql>flush privileges; #刷新权限
-
配置B服务器172.16.10.131
mysql>stop slave;
mysql>change master to master_host='172.16.10.181',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000047',master_log_pos=107;
mysql>start slave;
mysql>show slave status \G;
注:master_log_file='mysql-bin.000047'和master_log_pos=107必须和A服务器中查询Master状态中的值相同
如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。
-
查询B服务器(172.16.10.131)master的状态
-
配置A服务器172.16.10.181
mysql>stop slave;
mysql>change master to master_host='172.16.10.131',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000016',master_log_pos=663;
mysql>start slave;
mysql>show slave status \G;
注:master_log_file='mysql-bin.000016'和master_log_pos=663必须和B服务器中查询Master状态中的值相同
如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。
-
测试
-
在A服务器数据库test表中插入一条数据,查看B服务器数据库test中是否同步了刚刚插入的数据
-
在B服务器数据库test表中插入一条数据,查看A服务器数据库test中是否同步了刚刚插入的数据