MySQL数据库主从同步延迟分析及解决方案
一、据库及解决方MySQL的同步数据库主从复制原理
MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示:

MySQL数据库主从同步延迟分析及解决方案
分为四步走:
1. 主库对所有DDL和DML产生的延迟日志写进binlog;
2. 主库生成一个 log dump 线程,用来给从库I/O线程读取binlog;
3. 从库的分析I/O Thread去请求主库的binlog,并将得到的据库及解决方binlog日志写到relay log文件中;
4. 从库的SQL Thread会读取relay log文件中的日志解析成具体操作,将主库的同步DDL和DML操作事件重放。
关于DDL和DML
SQL语言共分为四大类:查询语言DQL,延迟控制语言DCL,分析操纵语言DML,据库及解决方定义语言DDL。同步
DQL:可以简单理解为SELECT语句;
DCL:GRANT、延迟ROLLBACK和COMMIT一类语句;
DML:可以理解为CREATE一类的分析语句;
DDL:INSERT、UPDATE和DELETE语句都是据库及解决方;
二、主从复制存在的同步问题
1. 主库宕机后,数据可能丢失;
2. 主从同步延迟。延迟
三、MySQL数据库主从同步延迟产生原因
原因分析:MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是IT技术网顺序写,所以效率很高。Slave的SQL Thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随即的,不是顺序的,成本高很多。另一方面,由于SQL Thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了锁等待那么延时就产生了。
常见原因:Master负载过高、Slave负载过高、网络延迟、机器性能太低、MySQL配置不合理。
四、主从延时排查方法
通过监控 show slave status 命令输出的Seconds_Behind_Master参数的值来判断:
NULL,云服务器表示io_thread或是sql_thread有任何一个发生故障;
0,该值为零,表示主从复制良好;
正值,表示主从已经出现延时,数字越大表示从库延迟越严重。
五、解决方案
解决数据丢失的问题:
1. 半同步复制
从MySQL5.5开始,MySQL已经支持半同步复制了,半同步复制介于异步复制和同步复制之间,主库在执行完事务后不立刻返回结果给客户端,需要等待至少一个从库接收到并写到relay log中才返回结果给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一个TCP/IP往返耗时的延迟。
2. 主库配置sync_binlog=1,innodb_flush_log_at_trx_commit=1
sync_binlog的默认值是0,MySQL不会将binlog同步到磁盘,其值表示每写多少binlog同步一次磁盘。
innodb_flush_log_at_trx_commit为1表示每一次事务提交或事务外的指令都需要把日志flush到磁盘。
注意:将以上两个值同时设置为1时,写入性能会受到一定限制,只有对数据安全性要求很高的场景才建议使用,比如涉及到钱的订单支付业务,而且系统I/O能力必须可以支撑!站群服务器
解决从库复制延迟的问题:
1. 优化网络
2. 升级Slave硬件配置
3. Slave调整参数,关闭binlog,修改innodb_flush_log_at_trx_commit参数值
4. 升级MySQL版本到5.7,使用并行复制
相关文章
- FlowN Play是个用Qt编写的新视频播放器。它有着漂亮又简洁的界面,只提供基本的播放功能。复制代码代码如下:然后下载DEB安装包,可以双击或在终端里把正操作的目录换到你保存安装包的目录下并输入以2025-11-05
本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析。一、常见使用方式Redis 的几种常见使用方式包括:1、Redis 单副本Redis 单副本,采用单个 Redis 节点部署架构,没有备2025-11-05
什么是react hook首先,它是在react16.8版本中引入的概念,也就说如果你的react版本低于16.8,你是不能使用的,因此在使用它的时候,一定要注意react的版本。它将函数组件的功能升2025-11-05
1、什么是Redis?简述它的优缺点?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬2025-11-05
Ubuntu 14.10 “Utopic Unicorn”乌托邦独角兽)已经正式发布,使用内核 3.16,Unity 桌面升级到 7.3,同时 Ubuntu-Kylin 14.10 发布,包含了优客系2025-11-05
一、前言最近经常碰到开发误删除误更新数据,这不,他们又给我找了个麻烦,我们来看下整个过程。二、过程由于开发需要在生产环节中修复数据,需要执行120条SQL语句,需要将数据进行更新。于是开发连上了生产数2025-11-05

最新评论