mysql数据库bug_分享2个近期遇到的MySQL数据库的BUG案
例
近⼀个⽉处理历史数据问题时,居然连续遇到了2个MySQL BUG,分享给⼤家⼀下,也欢迎指正是否有问题。
BUG1:
数据库版本: MySQL5.7.25 - 28
操作系统: Centos 7.7(不重要)
数据库架构: 主-从-级联从mysql操作官方文档
数据库参数:
innodb_support_xa = 1 # 因主库存在XA事务,因此设置⽀持xa事务
replicate_wild_do_table=yy.% # 只同步其中⼀个库
异常场景:级联从库上同步从库中的其中⼀个库(或者部分表,即存在过滤筛选部分表的场景),其中主库中其他库(⾮需要的库)存在XA事务,此时级联从库上启动主从同步时出现以下错误
[ERROR] Slave SQL for channel 'yy': Worker 1 failed executing transaction 'ANONYMOUS' at master log , end_log_pos 120460779;
The use of replication filters with XA transactions is not supported, and can lead to an undefined state in the replication slave.
Error_code: 3227
官⽅⽂档解答:
查官⽅⽂档,有记录对应问题
该问题已在MySQL8.0中修复,对应的MySQL8.0中的内容可以参考此链接
临时解决办法:
⽅式⼀: 将本架构中的其中⼀个从库设置binlog过滤,只记录所需库的binlog,再开启级联从库的同步即可。
⽅式⼆:使⽤ogg或canal等第三⽅⼯具处理同步
⽅式三:写同步脚本定时同步
BUG2:
数据库版本: MySQL5.6.27-75,MySQL5.7.25-28(从MySQL5.6.27-75原地升级的)
数据库架构: 主-从
异常场景:
将⼀张⼤表转移到备份库中,使⽤rename的⽅式出现异常
SQL> alter table tbname rename to bak_db.tbname;
错误信息如下:
2020-06-21T03:10:54.694718Z 200 [ERROR] InnoDB: Operating system error number 2 in a fileoperation.2020-06-
21T03:10:54.694737Z 200 [ERROR]InnoDB: The error means the system cannot find the path specified.2020-06-
21T03:10:54.694742Z 200 [ERROR] InnoDB: File ./testdb/tbname.ibd: 'rename' returned OS error 71.
在MySQL5.6.27 -75及其从库MySQL5.7.25-28的版本中均出现
官⽅⽂档解答:
经查,官⽅⽂档中有对应的bug记录
解决办法:
⽅式⼀:如果是静态表, ⼿动创建⼀张新表,再将数据复制过去的⽅式进⾏移动
⽅式三:如果是⾮静态表,则可以考虑⼿动再⽬标库创建新表,在原表上添加增删改的触发器(类似上⽂中的pt-osc变更表的处理⽅法)。该BUG已修复,其他版本中已解决,但是通过实践发现,原地升级的⽅式仍未解决,⼤家可以亲⾃实践验证⼀下。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论