• GTID复制之二


    在线启用GTID,这样就不会对生产造成影响。

    1.在每个Server上,执行 SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=WARN;确保在ErrorLog中没有WARN【警告】,若有请修复后再进行下一下。

    2.在每个Server上,执行SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON;

    3.在每个Server上,执行SET @@GLOABL.GTID_MODE=OFF_PERMISSIVE;该步在Server间的执行先后无关,一定要在所有Server都执行守我后在进行下一下。

    4.在每个Server上,执行SET @@GLOABL.GTID_MODE=ON_PERMISSIVE;

    5.等待直到所有Server上的ONGOING_ANONYMOUS_TRANSACTION_COUNT都为0.可用下面检测:
      SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

    6.确保每个slave上的anonymous transactions都复制完成,用于在线切换复制模式:先在Master上 SHOW MASTER STATUS;再在每个Slave上执行以确定要等待的时间:SELECT MASTER_POS_WAIT(file,position);

     7.在每个Server上,执行 SET @@GLOBAL.GTID_MODE=ON;

    8.修改每个Server上的配置文件,添加gtid_mode=ON;为了在启动时自动Fail-over,可以执行下面的,若为多源复制,则要为每个channel执行。

      STOP SLAVE[FOR CHANNEL 'channel'];

      CHANGE MASTER TO MASTER_AUTO_POSITION=1 [FOR CHANNEL 'channel'];

      START SLAVE [FOR CHANNEL 'channel'];

    在线取消 GTID事务,改为BinLog:

    1.为每个Slave执行下面的:

    STOP SLAVE [FOR CHANNEL 'channel'];
    CHANGE MASTER TO MASTER_AUTO_POSITION = 0, MASTER_LOG_FILE = file, 
    MASTER_LOG_POS = position [FOR CHANNEL 'channel'];
    START SLAVE [FOR CHANNEL 'channel'];
    2.在每个Server上:SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

    3.在每个Server上:SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

    4.在每个server上,Check 直到@@GLOBAL.GTID_OWNED为空。

    5.等待所有事务都被复制到所有Slave上。确认方法同上。

    6.在每个Server上,执行SET @@GLOBAL.GTID_MODE=OFF;

    7.在每个Server上,配置 gtid_mode=OFF,

    如果想设enforce_gtid_consistency=OFF,也要在配置中加上。

     

  • 相关阅读:
    将博客搬至CSDN
    JDBC
    Java刷题常用API
    Java的反射机制
    Java的IO流
    Docker原理:Cgroup
    Docker原理:Namespace
    Anaconda软件安装使用问题
    初步了解Unix系统的I/O模式
    深入理解索引和AVL树、B-树、B+树的关系
  • 原文地址:https://www.cnblogs.com/itdev/p/6021598.html
Copyright © 2020-2023  润新知