GreatSQL社区

搜索

[已解决] mydumper 0.12.5备份MySQL8.0.16 waiting for commit lock

599 9 2023-4-17 15:22
使用mydumper工具备份MySQL8.0.16进行测试逻辑迁移过程中,mydumper有一个线程一直处于waiting for commit lock状态,且阻塞其他会话,导致其他会话waiting for global read lock,请问下各位大佬,可能是什么原因导致的呢,另外有什么解决办法没有?

数据库配置:2C4G


全部回复(9)
yejr 2023-4-17 15:29:23
先查看当前有没有哪个session中有事务未提交的

select * from information_schema.innodb_trx;
Yangzy 2023-4-17 15:32:06
yejr 发表于 2023-4-17 15:29
先查看当前有没有哪个session中有事务未提交的

select * from information_schema.innodb_trx; ...

稍等,我复现一下,数据比较小,有三个线程是正常的,所以备份已经完成了,不过show processlist;显示的是完整截图,测试环境也没有业务连接,应该是没有未提交事务的
Yangzy 2023-4-17 15:35:33
yejr 发表于 2023-4-17 15:29
先查看当前有没有哪个session中有事务未提交的

select * from information_schema.innodb_trx; ...

刚修改为单个线程导出也出现这个问题了

yejr 2023-4-17 16:33:21
Yangzy 发表于 2023-4-17 15:35
刚修改为单个线程导出也出现这个问题了

连接ID = 282这个会话是不是显示开启了一个事务没提交?
Yangzy 2023-4-17 17:07:55
yejr 发表于 2023-4-17 16:33
连接ID = 282这个会话是不是显示开启了一个事务没提交?

282这个会话也是开启mydumper进程建立的连接,不是主动开启的会话
yejr 2023-4-17 21:03:03
Yangzy 发表于 2023-4-17 17:07
282这个会话也是开启mydumper进程建立的连接,不是主动开启的会话

那要再检查行锁以及mdl锁等待的情况了。
select * from sys.innodb_lock_waits;
select * from sys.schema_table_lock_waits;
yejr 2023-4-18 09:23:41
Yangzy 发表于 2023-4-17 17:07
282这个会话也是开启mydumper进程建立的连接,不是主动开启的会话

mydumper建立的连接,也是有可能会发起一个显式事务的。
另外,尝试打开general log观察是哪个会话启动的事务。
也可以尝试更换个mydumper版本试试看,或者换成原生的mysqldump或xtrabackup。
Yangzy 2023-5-6 11:21:16
yejr 发表于 2023-4-18 09:23
mydumper建立的连接,也是有可能会发起一个显式事务的。
另外,尝试打开general log观察是哪个会话启动的 ...

多谢叶老师了,处理完成后忘记回复了,
我们分析以后感觉是mysql bug导致的这个现象
这个bug在mysql8023解决
参加文档 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html
FLUSH TABLES WITH READ LOCK could block other sessions from executing SHOW TABLE STATUS. (Bug #31894662)
yejr 2023-5-6 12:38:31
Yangzy 发表于 2023-5-6 11:21
多谢叶老师了,处理完成后忘记回复了,
我们分析以后感觉是mysql bug导致的这个现象
这个bug在mysql8023 ...

原来如此,感谢分享
Yangzy

8

主题

0

博客

35

贡献

注册会员

Rank: 2

积分
57

助人为乐(铜)

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-5-8 02:06 , Processed in 0.047023 second(s), 17 queries , Redis On.
快速回复 返回顶部 返回列表