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
本文介绍了MySQL中GTID(GlobalTransactionIdentifier)在事务处理中的作用,如何检查和跳过事务错误,以及如何根据GTID恢复数据库。包括查看GTID状态、处理同步错误、设置GTID_NEXT和使用binlog进行数据恢复的方法。
472

被折叠的 条评论
为什么被折叠?



