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
  • 相关阅读:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: xxx()V
    Python 数组比较
    远程桌面CredSSP 加密数据库修正
    (转)解决ssh登录慢的问题(一定要在远端主机上修改啊)
    让linux开机自动执行一条需要管理员的密码的命令
    ssh批量登录并执行命令(python实现)
    批量重命名文件——python实现
    配置python的eclipse开发环境
    Linux常用压缩解压命令
    强大的zsh配置文件
  • 原文地址:https://www.cnblogs.com/erisen/p/6096965.html
Copyright © 2011-2022 走看看