zoukankan      html  css  js  c++  java
  • mysql使用GTID跳过事务

    GTID跳过有两种方法,一种是普通的跳过一个事务的方法,另外一个是在基于主库搭建新的slave的时候.
    一、普通跳过一个事务的方法。
    通过show slave statusG找到冲突的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
  • 相关阅读:
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    72. Edit Distance
    583. Delete Operation for Two Strings
    582. Kill Process
    indexDB基本用法
    浏览器的渲染原理
    js实现txt/excel文件下载
    git 常用命令
    nginx进入 配置目录时
  • 原文地址:https://www.cnblogs.com/erisen/p/6096965.html
Copyright © 2011-2022 走看看