系列文章目录


Mysql集群及高可用-SQL线程的优化-延迟复制6



mysql集群及高可用

  • 系列文章目录
  • 一、Mysql集群-延迟复制
  • 二、Mysql集群-延迟复制配置
  • 2.1测试,出现客户端出现卡顿,排查Io线程错误
  • 2.2继续测试延迟复制



一、Mysql集群-延迟复制

官方文档

延迟复制优点

1.在主库上面误操作,比如延迟30min,你还可以在slave端做数据回滚

2.一旦使用主从复制延迟是必然存在的,前面的操作是不断优化,减少延迟,延迟多少时间会对业务造成影响,可以使用延迟复制进行测试(设置延迟,不断提高延迟,测试对业务的影响)


二、Mysql集群-延迟复制配置

server3:

server3作为延迟的slave

设置30s延迟,默认单位是s

mysql延迟执行 mysql集群延迟_mysql


mysql延迟执行 mysql集群延迟_sql_02


查看slave的状态show slave status\G; 两个yes没问题

mysql延迟执行 mysql集群延迟_数据库_03


2.1测试,出现客户端出现卡顿,排查Io线程错误

server1:

客户端等待状态这个和io线程有关

调整的是sql线程,是sql回放延迟30s,与延迟复制无关

mysql延迟执行 mysql集群延迟_重启_04


所以检查io线程,前面设置的是半同步

show status like 'rpl%';

mysql延迟执行 mysql集群延迟_数据库_05


因为刚才server3重启了(上文配置 relay_log_recovery参数)


server3:

原因:之前配置sync半同步的时候设置的参数是临时的set global,重启server3数据库服务后之前的半同步不存在了

所以你参数要写入/etc/my.cnf要不然重启后相应的参数就没有了

重启io(stop slave;start slave;这样也行)

mysql延迟执行 mysql集群延迟_sql_06

再次查看状态rpl_semi_sync_slave_ebabled ON

server1:

mysql延迟执行 mysql集群延迟_sql_07

恢复正常,继续测试延迟复制


2.2继续测试延迟复制

没设置主键多个user9,无所谓

mysql延迟执行 mysql集群延迟_重启_08

server3:

查看slave的状态show slave status\G;

达到30s才会运行

mysql延迟执行 mysql集群延迟_mysql延迟执行_09


延迟30s以后开始执行

mysql延迟执行 mysql集群延迟_重启_10


server2:

查看slave的状态show slave status\G;

mysql延迟执行 mysql集群延迟_重启_11

server3:

30s后执行完成

mysql延迟执行 mysql集群延迟_mysql延迟执行_12


mysql延迟执行 mysql集群延迟_mysql_13

数据同步完成

mysql延迟执行 mysql集群延迟_mysql_14


END