mysql 跳过一个事物_mysql使用GTID跳过事务

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值