200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql 主从复制延迟_什么情况会导致MySQL主从复制延迟?

mysql 主从复制延迟_什么情况会导致MySQL主从复制延迟?

时间:2024-03-02 10:17:12

相关推荐

mysql 主从复制延迟_什么情况会导致MySQL主从复制延迟?

杨一回答的很好。

什么情况会导致MySQL主从复制延迟? 场景一:由于DBA 限制了索引合并,发现随后主从复制出现问题。 有点想不明白 为什么 数据库性能降低会导致延迟?还有其他什么情况能导致延迟吗?

由于DBA 限制了索引合并》》不知道你说的这个是在主上还是在从上?

发现随后主从复制出现问题》》我先理解为你说的这个问题 是 主从延迟

Index merge和主从延时没有必然关系(至少我是没有遇到过)。

有点想不明白 为什么 数据库性能降低会导致延迟》》

我理解你说的是从库的性能下降,整个从库的性能都下降了,所以从库执行主库上的操作时(sql)时,执行的速度也就自然慢了。这个时候有可能会有主库延迟(也不是必然)。

还有其他什么情况能导致延迟吗?》》

首先理解简单的理解什么是主从延迟?

我们一般说的主从延迟是指在从库show slave status\G 看Seconds_Behind_Master这一列的值去看主从延迟情况。(也有一些是应用程序能判断出来的,这里我们就不讨论)。我们简单的说一主一从的情况,Seconds_Behind_Master可以简单的理解为是已经接到的日志(relay log)和从库上已经同步到的位置之间的相差的时间。

那如何解决主从延迟?

1 网络的问题可能性较小,我们先忽略

2 接收到的sql在从库上执行的慢

2.1 从库硬件配置没有主库好

2.2 主库binlog_format=row(或者主库的binlog_format=maxed,但是符合转化为row的条件),并且对一个没有索引(有索引的也可能会有这个问题,只是没这么严重)的列进行了大量的delete、update。

例如一张表有500W,我们通过一条sql对某个没有索引的列更新50W行记录,这个在主库上是对表进行了一次全表扫描。假设这个操作被转化为了row模式,row模式时一次只操作一条记录,这样的binlog传输到从库之后,从库需要对这个500W行记录的表,全表扫描50W次。这个在从库上操作就需要了更长的时间,主从延迟就会发生

现象和解决方法可以参考 本问题中杨一的 回答。这个时候一般不好解决,常用两个方法 1 跳过这个操作,加上合适索引,再补数据(要想跳过需要先stop slave,这个也许要很长时间)。 2 kill-9关掉从库db,在配置文件中设置跳过主从自动开始,然后开启从库--加合适索引--开始同步

2.3 从库上只有一个sql_thread. 主库上可能有100个连接对数据库进行了更改的操作,但是到从库上之后,只有一个sql_thread进行操作,一个sql_thread可能不能执行太快(跟得上主库100个连接),也会产生主从延时

官方版mysql 5.5之前,包含5.5 都是只有一个sql_thread。 5.6时有不同库之间的并行。 5.7 有并行,也就是从库上可以有多个sql_thread执行操作。

Seconds_Behind_Master这个值也并不是能完全代表主从延迟,有时网络的中断会在从加上看show slave status时一直都处于没有变化的状态,虽然主库在执行sql,执行binlog的位置一直在变,但是从库根本没有接受到binlog.(网上有文章可以参数,如果找不到的话,可以告诉我,我把url发给你,搜索的过程也是学习的过程)

ucloud(UCloud - 专业云计算服务商)提供的udb(mysql)会自动监控主从之间的延迟的情况,并且达到客户设置的阀值时,可以直接告警给客户。你可以试着用下。

QQ 273002188 欢迎一起学习

QQ 群 236941212

oracle,mysql,PG 相互交流

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。