MySQL主从数据库同步延迟问题解决

  • 时间:
  • 浏览:1
  • 来源:uu快3app_uu快3预测苹果

http://douya.blog.51cto.com/6173221/1735386

3. MySQL数据库主从同步延迟避免方案。

参数含义:当slave从主数据库读取log数据失败后,停留多久重新建立连接并获取数据

mysql-5.6.3不可能 支持了多线程池池 的主从基因重组。原理和丁奇的同类 ,丁奇的是以表做多线程池池 ,Oracle使用的是以数据库(schema)为单位做多线程池池 ,不同的库能非要使用不同的基因重组线程池池 。

      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/18150938,如需转载请自行联系原作者

参数含义:当重新建立主从连接时,不可能 连接建立失败,间隔多久后重试。

mk-heartbeat的实现也是借助timestmp的比较实现的,它首先前要保证主从服务器前要要保持一致,通过与相同的好几条 多多NTP server同步时钟。它前要在主库上创建好几条 多多heartbeat的表,底下大概有id与ts好几条 多多字段,id为server_id,ts就是当前的时间戳 now(),该行态也会被基因重组到从库上,表建好前一天,会在主库上前一天台多线程池池 的模式去执行一行更新操作的命令,定期去向表中的插入数据,什儿 周期默认为1 秒,同去从库也会在后台执行好几条 多多监控命令,与主库保持一致的周期去比较,基因重组过来记录的ts值与主库上的同每根ts值,差值为0表示无延时,差值越大表示 延时的秒数越来越来越多。大伙儿都知道基因重组是异步的ts不肯删剪一致,所以该工具允许半秒的差距,在这之内的差异都可忽略认为无延时。什儿 工具就是通过实打实的复 制,巧妙的借用timestamp来检查延时,赞好几条 多多!

相信大伙儿对于哪几种好处不可能 非常了解了,在项目的部署中也采用什儿 方案。时候MySQL的主从同步总爱有从库延迟的问题图片图片,越来越为哪几种会有什儿 问题图片图片。什儿 问题图片图片怎样避免呢?

2. MySQL数据库主从同步延迟是为啥产生的。

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

基于局域网的master/slave机制在通常情形下不可能 能非要满足'实时'备份的要求了。不可能 延迟比较大,就先确认以下几条因素: 

1. 网络延迟

2. master负载

3. slave负载

一般的做法是,使用多台slave来分摊读请求,再从哪几种slave中取一台专用的服务器,只作为备份用,不进行其他任何操作,就能相对最大限度地达到'实时'的要求了

答:最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行。还有就是主库是写,对数据安全性较高,比如 sync_binlog=1,innodb_flush_log_at_trx_commit = 1 同类 的设置,而slave则不前要越来越高的数据安全,删剪能非要讲sync_binlog设置为0不可能 关闭binlog,innodb_flushlog也 能非要设置为0来提高sql的执行速率。另外就是使用比主库更好的硬件设备作为slave。

能非要通过监控show slave status\G命令输出的Seconds_Behind_Master参数的值来判断,是算不算有存在主从延时。

其值有越来越几种:

NULL - 表示io_thread或是sql_thread有任何好几条 多多存在故障,也就是该线程池池 的Running情形是No,而非Yes.

0 - 该值为零,是大伙儿极为渴望看了的情形,表示主从基因重组良好,能非要认为lag不存在。

正值 - 表示主我越来越多 说可能 老出延时,数字越大表示从库落后主库越来越来越多。

负值 - 几乎很少见,就是听其他资深的DBA说见过,我觉得 ,这是好几条 多多BUG值,该参数是不支持负值的,也就是不应该老出。

2. MySQL数据库主从同步延迟是为啥产生的。

master-connect-retry单位为秒 默认设置为 150秒

slave_net_timeout单位为秒 默认设置为 31500秒

MySQL的主从同步是好几条 多多很性心智心智性性心智性性成熟是什么是什么是什么 是什么的架构,优点为:①在从服务器能非要执行查询工作(即大伙儿常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器老出问题图片图片时,能非要切换到从服务器。

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

1. Seconds_Behind_Master  vs  2. mk-heartbeat,下面具体说下两者在实现功能的差别。

Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和io_thread基因重组好的 event的timestamp(简写为ts)进行比较,而得到的越来越好几条 多多差值。大伙儿都知道的relay-log和主库的bin-log底下的内容删剪一 样,在记录sql语录的同后该被记录上当时的ts,所以比较参考的值来自于binlog,我觉得 主从越来越必要与NTP进行同步,也就是说我越来越多 保证主从时钟的 一致。你也会发现,我觉得 比较真正是存在在io_thread与sql_thread之间,而io_thread才真正与主库有关联,于是,问题图片图片就出来了, 当主库I/O负载很大或是网络阻塞,io_thread非要及时基因重组binlog(越来越中断,也在基因重组),而sql_thread总爱都能跟上 io_thread的脚本,这时Seconds_Behind_Master的值是0,也就是大伙儿认为的无延时,时候,实际上都在,你懂得。这也就是为啥 么大伙儿要批判用什儿 参数来监控数据库是算不算存在延时不准的原因,时候什儿 值并都在总爱不准,不可能 当io_thread与master网络很好的情形下,越来越 该值也是很有价值的。(就好比:妈–儿子–媳妇的关系,妈与儿子亲人,媳妇和儿子也亲人,不见得媳妇与妈就很亲。开个玩笑:-)前一天,提到 Seconds_Behind_Master什儿 参数会有负值老出,大伙儿不可能 知道该值是io_thread的最近跟新的ts与sql_thread执行到 的ts差值,前者始终是大于后者的,唯一的不可能 就是某个event的ts存在了错误,比前一天的小了,越来越当什儿 情形存在时,负值老出就成为不可能 。

法子2. mk-heartbeat,Maatkit万能工具包中的好几条 多多工具,被认为能非要准确判断基因重组延时的法子。

通常配置以上好几条 多多参数能非要减少网络问题图片图片原因的主从数据同步延迟

pt-heartbeat就是错

判断主从延时,通常好几条 多多法子:

答:谈到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线程池池 却非要非要。

3. MySQL数据库主从同步延迟避免方案

答:当主库的TPS并发较高时,产生的DDL数量超过slave好几条 多多sql线程池池 所能承受的范围,越来越延时就产生了,当然还有就是不可能 与slave的大型query语录产生了锁停留。