一、MySQL数据库主从同步延迟                                                             

要了解MySQL数据库主从同步延迟原理,我们先从MySQL的数据库主从复制原理说起:

MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高。

Slave的IO Thread线程从主库中bin log中读取取日志。
Slave的SQL Thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随即的,不是顺序的,成本高很多。

由于SQL  Thread也是单线程的,如果slave上的其他查询产生lock争用,又或者一个DML语句(大事务、大查询)执行了几分钟,那么所有之后的DML会等待这个DML执行完才会继续执行,这就导致了延时。

二、MySQL数据库主从同步延迟产生原因

1、Master负载

2、Slave负载

3、网络延迟

4、机器配置(cpu、内存、硬盘)

总之,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了锁等待那么延时就产生了。

三、MySQL数据库主从同步延迟解决方案                                                  

1、salve较高的机器配置

2、Slave调整参数

我们从《MySQL数据丢失情况分析》中知道,为了保障较高的数据安全性,配置sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 等设置。而Slave可以关闭binlog,innodb_flush_log_at_trx_commit也可以设置为0来提高sql的执行效率

3、并行复制

各版本MySQL并行复制的实现及优缺点

MySQL 5.7 并行复制实现原理与调优

MySQL5.7 的真正并行复制enhanced multi-threaded slave(MTS)是否已经完全解决了主从同步复制的延迟,还需要在实际项目中验证。

最新文章

  1. 从CIO、CEO、CFO、COO...到CVO 这22个你了解几个? (史上最完整版)
  2. 6、httpd服务的安装、配置
  3. Wireshark找不到网络接口问题
  4. xinwajueji
  5. Flume用来收集日志,zeppelin用来展示
  6. Object-C @synthesize -- 笔记
  7. 样式布局分享-基于frozen.js的移动OA
  8. IOS深入学习(1)之图标文件(icon files)
  9. RSA密码系统 基于大数环境编写 密码学课程设计
  10. Spring学习(17)--- 三种装配Bean方式比较
  11. <算法>进制转换超详细
  12. Java计算当前日期前后几天是哪一天:
  13. vue的数据绑定和组件化
  14. Struts 2.5.20 在Eclipse IDE中的配置和开发实例
  15. LY.JAVA.DAY12.String类
  16. bzoj5019: [Snoi2017]遗失的答案
  17. 如何将service绑入到spring 并且在action中使用
  18. Mina 系列(二)之基础
  19. mysql创建和删除表
  20. Linux系统的运行级的概念

热门文章

  1. 微信小程序弹出层点击穿透问题
  2. 我理解的vue生命周期
  3. T-SQL 数值函数
  4. 6)协程三( asyncio处理并发)
  5. adb ( Android Debug Bridge)
  6. PYTHON- 操作系统和python程序
  7. ORA-00379: no free buffers available in buffer pool DEFAULT for block size 16K
  8. hdu1198 普通的并查集
  9. axure—日期函数
  10. python一个用例,多组参数,多个结果