searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

mysql中主从gtid数据不一致修复方法介绍

2023-06-09 06:05:42
110
0

在实际生产中,用户可能因为数据库账号权限没有把控好,使得用户在从库上进行了相关的误操作,使得主从数据不一致,影响数据主从复制功能以及为后续的故障带来一定影响!因此如何在故障出现后,去手动补齐数据库集群的gtid一致性具有重要意义!

使用说明:每个故障场景都有所不同,请使用该文档时,结合自己环境情况,确定问题后再决定是否需要施行该解决方案

A、确认GTID情况
查找三个实例的GTID:
show global variables like '%gtid%';
发现两个从库分别多了3个GTID
为: af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3、f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
具体三台机器GTID为:(M为主,S为从,从库标粗的GTID部分是比主库多的GTID)
M102 6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838
 
S104 6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838, af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3
 
S106 6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838, f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
 
B、修复目标
目标是三台都变成如下GTID:6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838, af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3, f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
 
即主库102增加:
af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3, f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
从库104增加:
f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
从库106增加:
af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3
 
C、修复过程
修复过程建议:先修复从库,最后修复主库,稳妥起见,每次插入一个空事务,都要查看GTID,防止插入失败
 
修复104从数据库:
关session binlog:
set sql_log_bin=OFF;
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1';
begin;
commit;
show global variables like '%gtid%';
 
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:3';
begin;
commit;
set gtid_next=AUTOMATIC;
show global variables like '%gtid%';
 
修复106从数据库:
关session binlog:
set sql_log_bin=OFF
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:3';
begin;
commit;
set gtid_next=AUTOMATIC;
show global variables like '%gtid%';
 
 
 
修复102主数据库:
关session binlog:
set sql_log_bin=OFF
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:3';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:3';
begin;
commit;
set gtid_next=AUTOMATIC;
show global variables like '%gtid%';
 
0条评论
0 / 1000
z****n
18文章数
1粉丝数
z****n
18 文章 | 1 粉丝
原创

mysql中主从gtid数据不一致修复方法介绍

2023-06-09 06:05:42
110
0

在实际生产中,用户可能因为数据库账号权限没有把控好,使得用户在从库上进行了相关的误操作,使得主从数据不一致,影响数据主从复制功能以及为后续的故障带来一定影响!因此如何在故障出现后,去手动补齐数据库集群的gtid一致性具有重要意义!

使用说明:每个故障场景都有所不同,请使用该文档时,结合自己环境情况,确定问题后再决定是否需要施行该解决方案

A、确认GTID情况
查找三个实例的GTID:
show global variables like '%gtid%';
发现两个从库分别多了3个GTID
为: af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3、f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
具体三台机器GTID为:(M为主,S为从,从库标粗的GTID部分是比主库多的GTID)
M102 6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838
 
S104 6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838, af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3
 
S106 6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838, f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
 
B、修复目标
目标是三台都变成如下GTID:6d042b55-a42a-11e8-8996-6c92bf5d2238:1-1869838, af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3, f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
 
即主库102增加:
af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3, f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
从库104增加:
f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1-3
从库106增加:
af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1-3
 
C、修复过程
修复过程建议:先修复从库,最后修复主库,稳妥起见,每次插入一个空事务,都要查看GTID,防止插入失败
 
修复104从数据库:
关session binlog:
set sql_log_bin=OFF;
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1';
begin;
commit;
show global variables like '%gtid%';
 
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:3';
begin;
commit;
set gtid_next=AUTOMATIC;
show global variables like '%gtid%';
 
修复106从数据库:
关session binlog:
set sql_log_bin=OFF
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:3';
begin;
commit;
set gtid_next=AUTOMATIC;
show global variables like '%gtid%';
 
 
 
修复102主数据库:
关session binlog:
set sql_log_bin=OFF
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:1';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='af8b9e4d-a42a-11e8-800d-6c92bf5d2666:3';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:1';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:2';
begin;
commit;
show global variables like '%gtid%';
 
set gtid_next='f6e55da4-a42a-11e8-925b-6c92bf5d12e0:3';
begin;
commit;
set gtid_next=AUTOMATIC;
show global variables like '%gtid%';
 
文章来自个人专栏
数据库运维专项
18 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0