null51CTO博客 - 威尼斯人

null51CTO博客

2019年03月06日12时33分41秒 | 作者: 凝丝 | 标签: | 浏览: 2083

1.MySQL数据库主从同步推迟原理。

    谈到MySQL数据库主从同步推迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版别之前),主库对一切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句子发生了锁等候。

3.MySQL数据库主从同步推迟解决计划

   最简略的削减slave同步延时的计划就是在架构上做优化,尽量让主库的DDL快速履行。还有就是主库是写,对数据安全性较高,比方sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需求这么高的数据安全,完全能够讲sync_binlog设置为0或许封闭binlog,innodb_flushlog也能够设置为0来进步sql的履行功率。别的就是运用比主库更好的硬件设备作为slave。

4.MySQL数据库主从同步推迟发生的要素。
1. 网络推迟
2. master负载
3. slave负载
一般的做法是,运用多台slave来分摊读恳求,再从这些slave中取一台专用的服务器,只作为备份用,不进行其他任何操作,就能相对最大极限地到达’实时’的要求了

别的,再介绍2个能够削减推迟的参数
–slave-net-timeout=seconds
参数意义:当slave从主数据库读取log数据失利后,等候多久从头树立衔接并获取数据
slave_net_timeout单位为秒 默认设置为 3600秒
| slave_net_timeout | 3600
–master-connect-retry=seconds
参数意义:当从头树立主从衔接时,假如衔接树立失利,距离多久后重试。
master-connect-retry单位为秒 默认设置为 60秒
一般装备以上2个参数能够削减网络问题导致的主从数据同步推迟

 


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章