双主复制实战

很多企业刚开始都是使用MySQL主从模式,一主多从、读写分离等。但是单主如果发生单点故障,从库切换成主库还需要作改动。因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性。
因此随着业务的发展,数据库架构可以由主从模式演变为双主模式。双主模式是指两台服务器互为主从,任何一台服务器数据变更,都会通过复制应用到另外一方的数据库中。

1.mysql准备2个主库
2.主库1修改my.cnf配置文件

#下面是主从复制需要的配置
log_bin=mysql-bin #log文件名 
server-id=1  
sync-binlog=1
binlog-ignore-db=performance_schema #要忽略的库
binlog-do-db=user #指定要同步的库

#双主复制追加以下配置
relay_log=mysql-relay-bin #开启回放日志
log_slave_updates=1 #在当前主库上做的一些更新操作,也写入binlog
auto_increment_offset=1 #自动递增,避免两台主库同时写入时id冲突,主要发生在双主双写的结构中,双主单写就用不到该参数
auto_increment_increment=2 #每次递增2,生成的id为1,3,5,7....
重启mysql
show master status;

log_slave_updates这个参数的解释:
M01同步从M02同步数据过来的时候,log_slave_updates参数用来控制M01是否把所有的操作写入到binary log,默认的情况下mysql是关闭的;
R01数据的更新需要通过读取到M01的binary log才能进行更新,这个时候M01是没有写binary log的,所以当数据从M02写入的时候,R01也就没有更新了。。
3.主库2修改my.cnf配置文件

log_bin=mysql-bin  
server-id=3 #注意这个不能与前两个库重复
sync-binlog=1
binlog-ignore-db=performance_schema 
binlog-do-db=user 

#双主复制追加以下配置
relay_log=mysql-relay-bin #开启回放日志
log_slave_updates=1 #在当前主库上做的一些更新操作,也写入binlog
auto_increment_offset=2 #自动递增,避免两台主库同时写入时id冲突,主要发生在双主双写的结构中,双主单写就用不到该参数
auto_increment_increment=2 #每次递增2,生成的id为2,4,6,8....
重启mysql
show master status;

4.主库1和主库2互为主从,因此在两台主库中分别指定对方为他们的主库

执行
change master to master_host='对方IP地址',master_port=3306,master_user='root',master_password='123456',master_log_file='mysql_bin.xxxx,master_log_pos=xxx;
start slave;
show slave status \G; 

master_log_file,master_log_pos参数在上面操作最后show master status查看主库状态时得知

到这里双主复制就完成了,一般使用中会额外增加一个从库,其中一个Master提供线上服务,另一个Master作为备胎供高可用切换,Master下游挂载的Slave承担读请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值