问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

捉虫日记 | MySQL 8.0从库某些情况下记录重放的CREATE TABLE、DROP...

发布网友 发布时间:2024-10-09 10:57

我来回答

1个回答

热心网友 时间:2024-10-13 21:34

当主从复制采用 binlog 的行模式时,如果从库启用 slow_query_log、log_slow_replica_statements 且从库重放 CREATE TABLE、DROP TABLE 时因特殊情况(比如被从库其他 SQL 占用 MDL 锁)执行耗时较长,会被从库记录到慢日志(slow log),而 ALTER TABLE 却不会被记录到慢日志。

ALTER TABLE 等管理语句是否会记录到慢日志,受参数 slow_query_log、log_slow_admin_statements 控制。

本文基于 MySQL 8.0.30 版本。

搭建主从复制,主(master)、从(replica)my.cnf 中启用 binlog 的行模式,然后从库动态设置配置参数,主库执行 SQL 语句,查看从库慢日志,查看从库slow_query_log_file参数指定的慢日志文件,其中出现 DROP TABLE 语句。

这与官方对 log_slow_replica_statements 参数的描述不符,官方描述为:When the slow query log is enabled, log_slow_replica_statements enables logging for queries that have taken more than long_query_time seconds to execute on the replica. Note that if row-based replication is in use ( binlog_format=ROW), log_slow_replica_statements has no effect. Queries are only added to the replica's slow query log when they are logged in statement format in the binary log, that is, when binlog_format=STATEMENT is set, or when binlog_format=MIXED is set and the statement is logged in statement format. Slow queries that are logged in row format when binlog_format=MIXED is set, or that are logged when binlog_format=ROW is set, are not added to the replica's slow query log, even if log_slow_replica_statements is enabled.

Setting log_slow_replica_statements has no immediate effect. The state of the variable applies on all subsequent START REPLICA statements. Also note that the global setting for long_query_time applies for the lifetime of the SQL thread. If you change that setting, you must stop and restart the replication SQL thread to implement the change there (for example, by issuing STOP REPLICA and START REPLICA statements with the SQL_THREAD option).

按照官方的描述,在 binlog_format 是行模式的情况下,即使启用 log_slow_replica_statements 参数,从库重放时也不该产生慢日志。

按照上述同样的步骤执行 ALTER TABLE 语句,则不会记录到 slow log。

通过阅读手册及自行验证,ALTER TABLE 等管理语句是否记录到从库的 slow log 受参数log_slow_admin_statements控制。

log_slow_admin_statements Include slow administrative statements in the statements written to the slow query log. Administrative statements include ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, and REPAIR TABLE.

最终会调用Query_logger::slow_log_write函数。

我查看了 8.0.31-8.0.35 版本的 change log,其中并无对DROP TABLE相关的 Bug Fix,说明该问题官方尚未修复。

公司同事向官方提交了 BUG,官方已经确认,其中的 patch 采用的思路 1:MySQL Bugs: #113251: the slow log in slave is logged ,when binlog_format is row
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邯郸自驾游到青岛马壕运河遗址推荐线路 株洲自驾到青岛马壕运河遗址途径地方 梧州回青岛马壕运河遗址要几个小时 石嘴山到青岛马壕运河遗址要多少油钱 可不可以用开水敷脸 开水能不能敷脸 发动机和发电机区别?? 电音之王朴智妍MV的图片? 电音之王mv里跳舞的是谁 自己怎样开网站 怎样把一个网页设置为主页 咸宁北怎么到贺胜桥? 开车豹解到贺胜桥走高速怎么走 郑州处理违章到什么地方处理? 2020年7月份在郑州违章扣3分罚款100,请问在12123处理3分扣吗?_百度知 ... 郑州机动车违章扣分手续怎么办理? 广州理工职业学院代码多少啊? 我女儿快结婚了,爷爷去世了怎么办啊? 浣溪锦云哪些人买了 成都华商理工职业学校2023招生简章 有哪些好专业 成都华商理工职业学校什么专业好 选哪个专业呢 ...A.埋下小麦种子后种子发芽B.用土豆发育成新植株C.野生水果落地后萌 ... ...是营养丰富的美味.你可知道:当把出芽的一小块土豆植入土中,能长成新... 用土豆芽发育成新植株是无性繁殖吗 下列都属于无性生殖的是( )A.埋下小麦种子后,种子发芽B.野生水果落地... 职称评定专业需不需要相同? 肥东理工学校可以自己带被子吗 长胖了有哪些有效减肥方法?(一定要有效喔^.^) 正在长个的男生(16岁)怎样安全减肥 肥东有什么好点的职业学校吗? 长安之星2发动机发抖怎么处理? 贺胜桥火车站简介 我的左耳朵,左脸的上半部分,还有头皮左半部分疼 是不是带状疱疹?两天前右头皮阵痛包括耳朵内 我妈妈昨天晚上回来说头皮疼右边耳朵也疼,今天早上起来以后右边眼睛明 ... iphone4s背部的什么model、emc、fcc id和ic这些的是每部机器都不一样... iphone4s右边触摸不了 图是盗的但情况一样 左边三竖横都可以用,有线... iphone4s滑动解锁划不开,编辑短信时wesdzx这几个字母也无法使用。是屏... 一个两位数,整数部分是最小的两位数,小数部分各数位上的数字之间和是... ...整数部分是最小的两位数,小数部分各数位上的数字之和是3,满足要求... ...数小数部分各个数位上的数字不同之和是15这个数最大是几最小是几... ...的整数部分是最小的两位数,小数部分各数位上数字之和是15这个小数+... 一个小数的整数部分是最小两位数,它的小数部分是最大的两位纯小数,那么... ...是6,小数部分个数字之和是15,而且各个数位上的字都不同.请你想一... ,一一个小数的整数部分是四小数部分各个数位上的数字之和是18而且小数... ps中如何给花画方框ps怎么画花边边框 罗马帝国玩胜之战作弊 罗马帝国玩胜之战官网如何下载 广西理工职业技术学院学费多少? 鱼竿的结构组成是什么样的 鱼竿如何组装 鱼竿包括哪些