ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql gtid 跳过事务 mysql gtid从库落后跳过落后事务

2022-02-25 16:01:46  阅读:266  来源: 互联网

标签:status set slave show 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=........  成功,如下图:

  

 

标签:status,set,slave,show,GTID,mysql,跳过,gtid
来源: https://www.cnblogs.com/gered/p/15936458.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有