偶遇mysql从库同步延迟延重
来源:互联网 发布:bbs url 网络推广 编辑:程序博客网 时间:2024/03/29 19:40
参考:http://www.linuxidc.com/Linux/2014-05/101450.htm
现象:在某一次巡查数据时,发现延迟达到100多万秒,由于之前没有添加监控的原因,所以一直没发现,如下所示:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 1124574
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 153
Master_UUID: 70a64c25-f855-11e4-9b89-c81f66e8665f
Master_Info_File: /export/mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: update
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
于是仔细重新查看了mysql同步的原理及可能导到延迟的原因:
1. MySQL数据库主从同步延迟原理。
答:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高,slave的Slave_IO_Running线程到主库取日志,效率很比较高,下一步,问题来了,slave的Slave_SQL_Running线程将主库的DDL和DML操作在slave实施。DML和DDL的IO操作是随即的,不是顺序的,成本高很多,还可能可slave上的其他查询产生lock争用,由于Slave_SQL_Running也是单线程的,所以一个DDL卡主了,需要执行10分钟,那么所有之后的DDL会等待这个DDL执行完才会继续执行,这就导致了延时。有朋友会问:“主库上那个相同的DDL也需要执行10分,为什么slave会延时?”,答案是master可以并发,Slave_SQL_Running线程却不可以。
2. MySQL数据库主从同步延迟是怎么产生的。
答:当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了,当然还有就是可能与slave的大型query语句产生了锁等待。
于是查看了当前数据库中的参数:
mysql> show variables like 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog | 0 |
+---------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1 |
+--------------------------------+-------+
1 row in set (0.00 sec)
解决方法:修改innodb_flush_log_at_trx_commit值即可,修改后如下:
mysql> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2 |
+--------------------------------+-------+
1 row in set (0.00 sec)
- 偶遇mysql从库同步延迟延重
- mysql数据库从库同步延迟的问题
- mysql数据库从库同步延迟的问题
- mysql 从库同步暂停怎么重启
- MySQL 从库延迟原因以及分析
- mysql主从同步延迟分析
- MySql主从同步和延迟同步
- 主从库同步延迟
- 解决MySQL从库延迟问题的几种方法
- mysql主从数据库同步延迟问题
- MySQL主从数据库同步延迟问题解决
- mysql主从同步延迟优化大全
- Mysql主从同步延迟问题及解决方案
- MySQL 5.7主从同步延迟优化大全
- mysql主从同步一致性,延迟性监控
- MySQL主从数据库同步延迟问题解决
- mysql主从,从库需要重新同步
- mysql从同步管理
- 用Maven部署war包到远程Tomcat服务器
- input与span之间莫名的空隙
- qt读写excel
- 凑硬币
- java读取二进制文件,并且用二分查找安装一定的规则查找符合条件的数据列
- 偶遇mysql从库同步延迟延重
- Python基础篇—Pandas应用(二)
- MyEclipse安装JS代码提示插件——Spket插件)
- Tomcat Server.xml详解
- Java基于POI读取Excel工具类
- 03_Elasticsearch如何安装以及相关插件的介绍
- Struts2 三种action类
- 服务器配置ASP.NET服务过程
- Digimat-MF:广义平均结果(General averaging results)