mysql主从gtid的使用

本文介绍了MySQL中GTID(GlobalTransactionIdentifier)在事务处理中的作用,如何检查和跳过事务错误,以及如何根据GTID恢复数据库。包括查看GTID状态、处理同步错误、设置GTID_NEXT和使用binlog进行数据恢复的方法。
摘要由CSDN通过智能技术生成

mysql每执行一个事务语句都会使gtid的偏移量+1,没执行一个事务语句可以通过命令show master status查看观察变化

还可以基于gtid查看binlog

 show binlog events in 'mysql-bin.000290';

 gtid主从同步事务出错,跳过报错事务方法

案例:从机同步主数据库时因为已经有了nacos数据库在执行同步的创建库命令报错

所以这里是跳过该事务的处理方式

查询出错的事务gtid的位置

select * from performance_schema.replication_applier_status_by_worker\G

更改当前gtid同步的下一个事务点

set GTID_NEXT='68210be8-b73b-11ed-8e10-000c29cfebb8:2';

查询是否更改

select @@gtid_next;

 执行跳过该事务

begin; commit;

 更改回自动同步模式

set session gtid_next = automatic;

查看是否更改

select @@gtid_next;

启动从服务

start slave;

show slave status\G

 gtid恢复数据库方法

需要根据binlog文件找到需要恢复的截至点

show master status;

show binlog events in 'mysql-bin.000290';

在根据该点取出需要恢复的事务语句

mysqlbinlog --skip-gtids --include-gtids='68210be8-b73b-11ed-8e10-000c29cfebb8:53-54 /var/lib/mysql/mysql-bin.000290 > /backup/gtid_test1.sql 

 必须要加上--skip-gtids参数不然会出现幂等性的问题,即假如多个GTID中,存在记录相同的语句,则不会执行,这就有可能导致恢复数据时恢复失败,所以需要加--skip-gtids参数避免该问题

然后再将gtid_test1.sql的事务语句通过source命令导入数据库中

导出多个binlog文件事务命令

mysqlbinlog --skip-gtids --include-gtids='c4d1a502-b360-11ec-afa4-000c2967ad99:1-19' /var/lib/mysql/mysql-bin.000288 /var/lib/mysql/mysql-bin.000289 /var/lib/mysql/mysql-bin.000290 > /backup/gtid_test2.sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值