mysql使用GTID跳过事务
来源:互联网 发布:java员工管理系统 ssh 编辑:程序博客网 时间:2024/06/05 23:05
GTID跳过有两种方法,一种是普通的跳过一个事务的方法,另外一个是在基于主库搭建新的slave的时候.
一、普通跳过一个事务的方法。
通过show slave status\G找到冲突的GTID号.
然后执行
SET gtid_next = '冲突的GTID号';
BEGIN;COMMIT;
SET gtid_next = 'AUTOMATIC';
START SLAVE;
这就可以跳过一个事务了,原理在于通过执行一个空事务代替master传递过来的冲突事务.
二、通过备份的dump.sql文件搭建新的slave.
开启gtid以后,使用mysqldump备份,一般系统会要求你使用–all-databases参数,避免主库和从库有部分数据不一致。
备份以后,dump.sql里面会有这样一条语句.
SET @@GLOBAL.GTID_PURGED='0140505e-4230-11e4-b7c9-000c29da163d:1-8,dd079e18-4244-11e4-b851-000c29da163e:1-2';
这个就是当前主库已经执行过的GTID,也就是dump.sql里面的数据已经包含的GTID,对于这些GTID,slave是不用执行了,所以我们需要设置slave从这些
GTID以后开始复制.方法就是上面这条sql.
将dump.sql直接导入到slave以后.就可以直接change master了.
如果你是想通过这个方法跳过某个或者某些GTID,那么有点不同了.
set @@GLOBAL.GTID_PURGED是有要求的,也就是GTID_PURGED必须为空才可以设置,如何把GTID_PURGED清空呢.也就是需要执行
(root:hostname)[test]> show global variables like '%gtid%';+--------------------------+-------------------------------------------------------------------------------------------------------------------------------+| Variable_name | Value |+--------------------------+-------------------------------------------------------------------------------------------------------------------------------+| enforce_gtid_consistency | ON || gtid_executed | 0140505e-4230-11e4-b7c9-000c29da163d:1-25,dd079e18-4244-11e4-b851-000c29da163e:1-2,dda2f003-4244-11e4-b851-000c29da163f:1-3 || gtid_mode | ON || gtid_owned | || gtid_purged | 0140505e-4230-11e4-b7c9-000c29da163d:1-8,dd079e18-4244-11e4-b851-000c29da163e:1-2 |+--------------------------+-------------------------------------------------------------------------------------------------------------------------------+5 rows in set (0.00 sec)(root:hostname)[test]> reset master;Query OK, 0 rows affected (0.02 sec)(root:hostname)[test]> show global variables like '%gtid%';+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| enforce_gtid_consistency | ON || gtid_executed | || gtid_mode | ON || gtid_owned | || gtid_purged | |+--------------------------+-------+5 rows in set (0.00 sec)(root:hostname)[test]> stop slave; //清掉SLAVE信息.(root:hostname)[test]> reset slave all;
然后设置gtid_purged,这个ID就是你要跳过过的GTID,注意这里GTID还要包含gtid_executed里面其他UUID的GTID(本机的可以不再设置了)。
(root:hostname)[test]> set @@global.gtid_purged='0140505e-4230-11e4-b7c9-000c29da163d:1-25,dd079e18-4244-11e4-b851-000c29da163e:1-2';Query OK, 0 rows affected (0.03 sec)(root:hostname)[test]> CHANGE MASTER TO MASTER_HOST='192.168.153.150', MASTER_PORT=3306, MASTER_USER='slave',MASTER_PASSWORD='slave', master_auto_position=1;Query OK, 0 rows affected, 2 warnings (0.20 sec)(root:hostname)[test]> start slave;Query OK, 0 rows affected, 1 warning (0.03 sec)CHANGE MASTER TO MASTER_HOST='192.168.1.136', MASTER_PORT=3306, MASTER_USER='dbadmin',M
0 0
- mysql使用GTID跳过事务
- 实战:mysql 5.6 跳过指定事务GTID
- mysql gtid 复制跳过错误
- mysql5.7跳过错误事务GTID
- mysql GTID主从复制 跳过复制错误
- mysql开启GTID跳过错误的方法
- MySQL GTID使用小结
- MySQL复制之GTID跳过与FEDERATED存储引擎
- Mysql开启GTID后遇到错误跳过方法
- GTID:跳过错误
- mysql使用gtid主从复制
- mysql 从库如何跳过一个事务
- MySQL GTID
- MySQL 5.6的GTID复制报错没有事务号
- MySQL复制之GTID跳过与FEDERATED存储引擎(接上篇)
- mysql5.6GTID手动跳过复制错误
- 解决mysql使用GTID主从复制错误问题
- MySQL 5.7搭建备库 开启gtid 使用mysqldump
- c/c++回调函数
- Android HttpClient get、post 访问网络
- Android自动化测试shell脚本(飞车Asphalt5)
- const char*, char const*, char*const的区别
- JavaScript之数据类型
- mysql使用GTID跳过事务
- UVA 1665(并查集题目)
- Linux 删除文件命令
- iOS开发:设置 UITabBar 的背景色
- C语言生成带序号的文件名
- JQuery Ajax 在asp.net中使用总结
- C/C++刁钻问题各个击破之细说sizeof
- JDK原生类操作XML
- (转) unity 在移动平台中,文件操作路径详解