binlog_format产生的延迟问题

Posted tonnychen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了binlog_format产生的延迟问题相关的知识,希望对你有一定的参考价值。

问题:

  一同事提出说从库延迟,我上去查看。发现一个怪现象,TPS其实很低,怎么就延迟了呢?

技术分享图片

 

排查:

  (1)查看性能数据,发现一个很怪的现象,比如17:36分这里,至17:38分,ins都为0,说明这个时候,系统卡住了。这意味着有一条语句,需要执行70秒。

show processlist可以发现是一条update语句。

技术分享图片

 

生产环境标准化都是row格式,我还郁闷怎么能看到update语句。原来,这个群集,同事并没有用row格式,而是用了mixed格式。今天上午才修改为row格式,而当前在应用的仍是几天前的日志,仍是mixed格式的binlog,所以才会出现如上面update一条语句需要70秒的问题。

 (2)为了验证当前应用的binlog的确是mixed格式,去主库查看binlog,发现的确不是row格式,而是以SQL格式保存,也即mixed的binlog。

技术分享图片

 

 

 解决:

  (1)将binlog为mixed的修改为row格式,等待复制追上;

  (2)扫描全部生产库,是否还有mixed格式的binlog,避免重复出现低级错误。

以上是关于binlog_format产生的延迟问题的主要内容,如果未能解决你的问题,请参考以下文章

mysql binlog_format row and Statement 比较

揪出MySQL延迟上千秒的元凶

MySQL 8 复制

sync_binlo主从复制

面试十题

使用 binlog_format="row" 在只读副本上启用 BinLogs