前言
实现双主复制其实也就是在主从复制的基础上,开启从节点的binlog日志。在从节点上也创建一个用于同步数据的账号,同时在原来主节点上配置同步信息即可。实现主从复制可参考我的另一篇博客,windows下实现mysql主从复制。
搞起来
1 3308节点(原来的从节点)配置
1.1 开启binlog日志
log-bin = mysql-bin
该配置在创建mysql实例时已开启,所以本次忽略
1.2 创建用于同步数据的账号
create user 'syncUser'@'127.0.0.1' identified by '123$%^';
1.3 授予该账号数据权限
grant replication slave on *.* to 'syncUser'@'127.0.0.1';
2 3307节点(原来的主节点)配置
2.1 配置文件修改,并创建对应的relay目录
#同步配置
#同步日志文件存放的位置
relay-log=D:/soft/dev/mysql57/node1/relay
relay-log-index=D:/soft/dev/mysql57/node1/relay/relay-bin.index
2.2 重启服务
net stop mysql57-node1
net start mysql57-node1
2.3 查询3308状态
show master status;
和上篇的主从配置一致
2.4 配置master信息
change master to master_host='127.0.0.1',master_port=3308,master_user='syncUser',master_password='123$%^',master_log_file='mysql-bin.000004',master_log_pos=1301;
2.5 开启slave模式
start slave;
2.6 查看slave状态
show slave status;
到这里就配置成功了
3 问题解决
3.1 3307(原来的主库)同步3308失败
我的问题表现在3307查询slave状态时,slave_sql_running为no
- 在3307上停止slave模式
stop slave;
- 重新配置2.3-2.6即可解决
4 测试
4.1 在3308(原来的从库)上创建数据库
4.2 在3307(原来的主库)上创建user表
4.3 在3308(原来的从库)上新增user表记录
结束语
到这里,就实现了mysql的双主复制,操作两个数据库,就和操作一个数据库一样了。这种场景可以实现mysql的双机热备,其实还是挺好玩的是不是!!!