淘宝客推广网站建设,拓客app下载,wordpress天气接口,临沂地区建站网站背景
读写分离是快速提高数据库性能的手段#xff0c;主库只负责写入#xff0c;从库负责查询。但在性能得到提升的同时#xff0c;编程的复杂度就会提升。由其碰到主从同步延迟的情况#xff0c;在数据写入后#xff0c;在从库无法读取到最新数据#xff0c;会对业务逻…背景
读写分离是快速提高数据库性能的手段主库只负责写入从库负责查询。但在性能得到提升的同时编程的复杂度就会提升。由其碰到主从同步延迟的情况在数据写入后在从库无法读取到最新数据会对业务逻辑造成很大的影响。那么我们如何发现主从延迟对业务有什么延续呢那就需要人为的制造延迟将问题暴露出来。
制造主从延迟
Mysql的主从配置支持设置主从延迟时间change replication source to source_delay interval; interval是以秒来计算。下面我们测试一下这个配置的效果。
服务器配置
Mysql 8.0.35
主库服务器192.168.0.101
从库服务器192.168.0.102
在从库上配置主库信息并设置延迟时间为30秒然后查看从库状态就能看到同步已经就绪。
mysql change replication source to master_host 192.168.50.101,master_port 3306,master_user sync,master_password Abcd123!,master_log_file binlog.000002,master_log_pos 2266,source_delay 30;
mysql start slave;
mysql show slave status\\G
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.50.101Master_User: sync**Slave_IO_Running: YesSlave_SQL_Running: YesSQL_Delay: 30**在主库创建一个表并插入一条数据。
mysql create table t1 (id bigint);
mysql insert into a values (2);再查看从库状态发现从库已经开始延迟了Seconds_Behind_Master表示延迟时间22秒SQL_Remaining_Delay表示延迟同步还剩余9秒Slave_SQL_Running_State表示线程状态在等待延迟结束。
mysql show slave status\\G
*************************** 1. row ***************************Seconds_Behind_Master: 22SQL_Delay: 30SQL_Remaining_Delay: 9Slave_SQL_Running_State: Waiting until SOURCE_DELAY seconds after source executed event通过这个方式我们就能模拟出主从延迟的效果。
如果要修改延迟时间的话要先停止同步再修改配置然后重新启动同步。
设置主从延迟为60秒
mysql stop slave;
mysql change master to source_delay 10;
mysql start slave;注
Mysql 8.0.23开始使用change replication source to替换change master to语句如果是之前的版本要使用change master to MASTER_DELAY interval也能达到一样的效果。
参考 change replication source to文档MySQL :: MySQL 8.2 Reference Manual :: 13.4.2.3 CHANGE REPLICATION SOURCE TO Statement change master to文档MySQL :: MySQL 8.2 Reference Manual :: 13.4.2.1 CHANGE MASTER TO Statement