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