mysqlbinlog恢复数据-GTID

mysqlbinlog恢复数据-GTID## 标题
1、数据准备
mysql> use hyc
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000004
Position: 194
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 3b9374ec-c643-11ea-b919-000c291a0385:1-39
1 row in set (0.00 sec)

mysql> create table t1(id int ,uname varchar(10));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values(1,‘aa’),(2,‘bb’);
Query OK, 2 rows affected (0.10 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from t1;
±-----±------+
| id | uname |
±-----±------+
| 1 | aa |
| 2 | bb |
±-----±------+
2 rows in set (0.00 sec)

2、查看二进制日志
在这里插入图片描述

gtid开始位置:mysql-bin.000004 | 373 | Gtid | 3306 | 438 | SET @@SESSION.GTID_NEXT= ‘3b9374ec-c643-11ea-b919-000c291a0385:41’
gtid结束位置:mysql-bin.000004 | 669 | Xid | 3306 | 700 | COMMIT /* xid=24 */

3、mysqlbinlog解析日志
mysqlbinlog --no-defaults -v mysql-bin.000004 --start-position=373 --stop-position=700
在这里插入图片描述
4、开始回滚事务,检查t1表是否有数据
mysqlbinlog --no-defaults -v mysql-bin.000004 --start-position=373 --stop-position=700|mysql -uroot -p123456 --socket=/data/mysql3306/mysql.sock --port=3306
select * from t1; #结果为空,发现事务没有回滚
网上查找资料:源库有已经执行过这个事务,不能重复执行,需要以下参数方可执行
使用–skip-gtids=true 参数
–skip-gtids=xxx的作用为:mysqldump是否使用–skip-gtids=true 参数,要根据情况来定;第一种情况:如果我们是要恢复数据到源数据库或者和源数据库有相同 GTID 信息的实例,那么就要使用该参数。如果不带该参数的话,是无法恢复成功的。因为包含的 GTID 已经在源数据库执行过了,根据 GTID 特性,一个 GTID 信息在一个数据库只能执行一次,所以不会恢复成功。
mysqlbinlog --no-defaults -v --skip-gtids=true mysql-bin.000004 --start-position=373 --stop-position=700|mysql -uroot -p123456 --socket=/data/mysql3306/mysql.sock --port=3306
select * from t1; #数据回滚成功
在这里插入图片描述

总结:使用场景
1、如果通过全量+事务回滚的情况下,不使用–skip-gtids=true参数
2、如果在源库中回滚事务则需要跳过GTID(源库有已经执行过这个事务,不能重复执行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值