mysql主从gtid的使用

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

mysql主从gtid的使用_第1张图片

还可以基于gtid查看binlog

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

mysql主从gtid的使用_第2张图片

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

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

mysql主从gtid的使用_第3张图片

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

查询出错的事务gtid的位置

select * from performance_schema.replication_applier_status_by_worker\G

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

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

查询是否更改

select @@gtid_next;

mysql主从gtid的使用_第4张图片

 执行跳过该事务

begin; commit;

 更改回自动同步模式

set session gtid_next = automatic;

查看是否更改

select @@gtid_next;

mysql主从gtid的使用_第5张图片

启动从服务

start slave;

show slave status\G

mysql主从gtid的使用_第6张图片

 gtid恢复数据库方法

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

show master status;

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

mysql主从gtid的使用_第7张图片

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

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,mysql,数据库)