如何确定哪些查询导致一组运行组复制的MySQL服务器存在复制滞后?
我们有一个包含9台服务器的MySQL组复制集群,目前我们正在经历复制滞后(即几个服务器在MySQL中的高值)。我们使用的是MySQL社区版本8.0.19。
我们注意到,无论是慢速查询还是频繁查询,都不一定与服务器之间的延迟相关。我们还注意到,我们在应用程序中拥有的一些特定的连接正在导致滞后峰值,并且,一旦我们删除它们,滞后就会减少。然而,并不是所有的联接都是这样。
是否有一种工具或方法可以用来查找导致延迟的查询?
发布于 2021-03-04 00:55:28
在这两台机器上打开慢速日志。您使用的是什么版本的MySQL?以下是一个相对新版本的良好设置:
log_output = FILE
slow_query_log = ON
slow_query_log_file = (fullpath to some file)
long_query_time = 1
log_slow_admin_statements = ON
log_queries_not_using_indexes = OFF
log_slow_slave_statements
log_slow_extra = ON更多:http://mysql.rjweb.org/doc.php/mysql_analysis#slow_查询_和_慢速日志
您所看到的情况的一个可能原因是:一个需要一些时间并击中tableA的ALTER将被复制。与此同时,tableA正在发生其他事情(读或写)。上述设置可能会捕捉到ALTER。
在慢速日志中查找(但很难看到)的另一件事是:一堆查询在同一秒钟左右结束。这通常意味着他们中的一个人花了很长时间来阻止其他人(不管是直接还是间接的)。
无论如何,使用pt-query-digest;它的默认排序是将“最差”查询放在第一位。然后..。
UPDATE ... WHERE primary_key = 123是秒(S),甚至是分钟(S),而不是毫秒。https://dba.stackexchange.com/questions/286396
复制相似问题