zoukankan      html  css  js  c++  java
  • 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,也要在配置中加上。

     

  • 相关阅读:
    进程
    交换分区
    linux命令
    Linux进程
    开会
    今天的学习情况
    CentOS7.6 yum方式安装redis最新版
    Centos7 yum安装postgresql 9.5
    GitLab CI runner can't connect to tcp://localhost:2375 in kubernetes
    Server 2008 R2远程桌面授权,解决120天过期问题
  • 原文地址:https://www.cnblogs.com/itdev/p/6021598.html
Copyright © 2011-2022 走看看