当前位置: 首页 > news >正文

读写分离之同步延迟测试

背景

读写分离是快速提高数据库性能的手段,主库只负责写入,从库负责查询。但在性能得到提升的同时,编程的复杂度就会提升。由其碰到主从同步延迟的情况,在数据写入后,在从库无法读取到最新数据,会对业务逻辑造成很大的影响。那么,我们如何发现主从延迟对业务有什么延续呢,那就需要人为的制造延迟,将问题暴露出来。

制造主从延迟

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

http://www.lryc.cn/news/263313.html

相关文章:

  • SpringBoot+OCR 实现PDF 内容识别
  • Go和Java实现抽象工厂模式
  • 深入理解Java虚拟机---内存分配
  • 计算机网络2
  • jenkins-Generic Webhook Trigger指定分支构建
  • 源码解析8-QSS原理-案例-Qt的qss特殊设置多个子控件的颜色与伪状态
  • Nginx+Tomcat实现负载均衡和动静分离
  • linux系统的u盘/mmc/sd卡等的支持热插拔和自动挂载行为
  • 使用Python将OSS文件免费下载到本地:项目分析和准备工作
  • 从Gitee克隆项目、启动方法
  • 不用再找了,这是大模型实践最全的总结
  • QT 记录
  • 智能优化算法应用:基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • VSCode 常用的快捷键和技巧系列(2)
  • 【Hadoop】执行start-dfs.sh启动hadoop集群时,datenode没有启动怎么办
  • 计算机网络(四)
  • 非递归实现的快速排序
  • windows 安装jenkins
  • SQL进阶理论篇(十二):InnoDB中的MVCC是如何实现的?
  • SpringCloudAliBaba篇之Seata:分布式事务组件理论与实践
  • 在centos7.9上安装Jenkins的安装过程
  • uni-app基本标签
  • 《PySpark大数据分析实战》-14.云服务模式Databricks介绍基本概念
  • 微信小程序校园跑腿系统怎么做,如何做,要做多久
  • 当我分别问8款GPT一个问题。。。
  • Elasticsearch 8.9 search命令执行查询源码
  • 【PHP】身份证正则验证、校验位验证
  • Matlab示例-Examine 16-QAM Using MATLAB学习笔记
  • ArcGIS Pro SDK运行消息只提示一次
  • 通话状态监听-Android13