mysql gtid 跳过事务 mysql gtid从库落后跳过落后事务
2022/2/25 19:22:07
本文主要是介绍mysql gtid 跳过事务 mysql gtid从库落后跳过落后事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【1】场景需求
mysql 8.0.22
我从库落后主库几万~几十万个事务,大几万秒,我不想要了;
已知
(1)落后期间只有 insert 语句 和 create table
那我不想等那么久了,不想让它追了;
【2】尝试解决
(1)设置 gtid_next=最新主库gtid
stop slave; set gtid_next='1b95dc8e-92e5-11ec-bb5b-fa163ec8e3ff:4947003'; begin;commit; set gtid_next='automatic'; start slave;
很快发现不对了啊,怎么突然就 executed_gtid_set 从 1-1406920 变成了 1-1408858:4947003 了;
这证明是在追中间部分的 gtid事务啊;
(2)直接 set gtid_purged 试试【解决】
我用 show slave status 来看当前执行的gtid
然后针对间隙,做 gtid_purged 操作,结果报错如下:
错误3546(hy000):@@global。不能更改GTID_PURGED:添加的gtid集不能与@@全局集重叠。gtid_executed
ERROR 3546 (HY000): @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED
重叠?好像没有啊,show slave status 里不是 1-2300352:4947003 吗?
我gtid_purged 2300353-4947002 不是正好吗?
结果仔细看了一下错误信息,说是不能和变量 @@GLOBAL.GTID_EXECUTED 中的值 重叠,难道 这个全局变量参数和 show slave status 中的 Executed_Gtid_Set 不一致?
查看一下:
仔细看看我之前的操作:是因为使用的是 stop slave 之前的值,怪不得有重叠;
所以一定要 stop slave 之后,再show slave status啊;查看的 Executed_gtid_set 就一定是准的了
再次 set global gtid_purged=........ 成功,如下图:
这篇关于mysql gtid 跳过事务 mysql gtid从库落后跳过落后事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南