MySQL中GTID主备不一致怎么修复

  介绍

这篇文章主要介绍了MySQL中GTID主备不一致怎么修复,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

方案一:重建副本

MySQL 5.6及以上版在复制中引入了新的全局事务ID (GTID)支持。在启用了GTID模式的情况下执行MySQL和MySQL 5.7的备份时,Percona XtraBackup会自动将GTID值存储在xtrabackup_binlog_info中。该信息可用于创建新的(或修复损坏的)基于GTID的副本。

前提条件

MySQL机器上需要安装Percona XtraBackup

优点

比较安全,操作简单

缺点

<李>

数据量较大的时候备份所需的时间比较久

<李>

当数据库有做读写分离的时候,奴隶承担的读请求需要转移到主

操作步骤


在总体上使用XtraBackup工具对当前的数据库进行备份,执行该命令的用户需要有读取MySQL数据目录的权限

innobackupex ——默认文件=/etc/my.cnf ——用户=root  -H  127.0.0.1 ——密码=(密码),/tmp

将该备份文件拷贝到奴隶机器上

奴隶

在奴隶机器上执行该命令,准备备份文件

innobackupex ——默认文件=/etc/my.cnf ——用户=root  -H  127.0.0.1 ——密码=(密码),——apply-log /tmp/(时间戳)

备份并删除奴隶数据目录

systemctl  stop  mysqld   mv /数据/mysql {,。贝克}

将备份拷贝到目标目录,并赋予相应的权限,然后重启奴隶

innobackupex ——默认文件=/etc/my.cnf ——用户=root  -H  127.0.0.1 ——密码=(密码),——copy-back /tmp/(时间戳)   chmod  750/数据/mysql   chown  mysql.mysql  -R /数据/mysql   systemctl  start  mysqld

查看当前备份已经执行过的最后一个的GTID,如下示例

,美元cat /tmp//xtrabackup_binlog_info时间戳   mysql-bin.000002 , 1232,,,, c777888a b6df - 11 - e2 a604 - 080027635 - ef5:1 - 4

这个GTID也会在innobackupex备份完成后打印出来

innobackupex:, MySQL  binlog 位置:,filename  & # 39; mysql-bin.000002& # 39;,, position  1232年,GTID  of 从而last  change  & # 39; c777888a b6df - 11 - e2 a604 - 080027635 - ef5:1 - 4 - & # 39;

使用根登录MySQL,进行如下配置

NewSlave 祝辞,RESET 主;   NewSlave 祝辞,SET  GLOBAL  gtid_purged=& # 39; c777888a b6df - 11 - e2 a604 - 080027635 - ef5:1 - 4 - & # 39;;   NewSlave 祝辞CHANGE  MASTER    ,,,,,,MASTER_HOST=癿asterip"美元,   ,,,,,,MASTER_USER=皉epl",   ,,,,,,MASTER_PASSWORD=皊lavepass"美元,   ,,,,,,MASTER_AUTO_POSITION =, 1;   NewSlave 祝辞,START 奴隶;

查看奴隶的复制状态是否正常

NewSlave 祝辞SHOW  SLAVE 状态\ G   ,,,,[…]   ,,,,Slave_IO_Running:是的   ,,,,Slave_SQL_Running:是的   ,,,,[…]   ,,,,Retrieved_Gtid_Set:, c777888a b6df - 11 - e2 a604 ef5:5——080027635   ,,,,Executed_Gtid_Set:, c777888a b6df - 11 - e2 a604 - 080027635 - ef5:1 - 5

我们可以看到副本已检索到编号为5的新事务,因此从1到5的事务已在此副本上了。这样我们就完成了一个新副本的搭建。

方案二:使用percona-toolkit进行数据修复

PT工具包中包含pt-table-checksum和pt-table-sync两个工具,主要用于检测主从是否一致以及修复数据不一致情况。

前提条件

MySQL机器上需要安装percona-toolkit工具

优点

修复速度快,不需要停止从库

缺点

操作复杂,操作前最后先备份数据库
待修复的表需要具有唯一约束

操作步骤

背景示例

IP关系对应

|, IP  | Role  |   | | - - - - -祝福、快乐- - - - - |   | |,192.168.100.132  Master  |   | |,192.168.100.131  Slave  |

假设待恢复的表结构如下所示

mysql>, show  create  table  test.t;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   | |,Table  Create  Table ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   |,t ,, |, CREATE  TABLE “t”, (   ,“id”int (11), NOT 空,   ,“内容”varchar (20), DEFAULT 空,   ,PRIMARY  KEY  (id)   ),引擎=InnoDB  DEFAULT  CHARSET=latin1  |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

MySQL中GTID主备不一致怎么修复