zoukankan      html  css  js  c++  java
  • mysql5.7主从复制--在线变更复制类型【转】

    这里说一下关于如何在线变更复制类型(日志复制到全局事物复制),参考课程:mysql5.7复制实战

    先决条件
        (1)集群中所有的服务器版本均高于5.7.6
    (2)集群中所有的服务器gtid_mode都设置为off(使用 show variables like 'gtid_mode' 命令查看)


       1:将基于日志的复制变更为基于事物的复制处理步骤
        (1) 设置参数
       gtid_mode在5.7版本有一下4个值
       off:关闭
       off_permissive:准备关闭
       on_permissive:准备开启
       on:开启
       这4个值只能从off-->off_permissive-->on_permissive-->on或者(off<--off_permissive<--on_permissive<--on)的顺序设置
       
       (主服务器和从服务器上分别执行以下命令,前2条命令按顺序分别指向,而不是在一台服务器上一次性事项所有命令)
           set @@global.enforce_gtid_consistency=warn;      //强制设置gtid一致性,值为:warn,设置完后建议用tail -f命令查看一下mysql-error.log是否有异常信息
           set @@global.enforce_gtid_consistency=on;        //强制设置gtid一致性,值为:on
           set @@global.gtid_mode=off_permissive;            //设置gtid_mode为准备关闭状态
           set @@global.gtid_mode=on_permissive;         //设置gtid_mode为准备开启状态
       
        (2) 在从服务器上查看状态 
       show status like 'ongoing_anonymous_transaction_count';   //查看基于日志的复制的事物数量,为0或者为空表示正常。这一步是为了保证基于日志复制的数据的一致性,防止有事物在主
                                                                 //服务器上执行完成,在从服务器上没有被执行,导致数据丢失
       set @@global.gtid_mode=on;                       //设置gtid_mode为开启状态
       
       在从服务器上
       停止slave;
       stop slave;
       change master to master_auto_position=1;  (改变复制方式)
       start slave;

    查看

       


       (3)持久配置(重要操作)
        确认成功切换到基于事物的复制之后,需要将一下2个参数添加到my.cnf中(所有的mysql服务器节点)
    保证在下次重启mysql服务器的时候会自动的启动全局事物复制的方式进行主从同步
        enforce_gtid_consistency=on
    gtid_mode=on

        这一步非常重要,千万不要忘记了。不然下次启动mysql你就会发现主从同步跪了。 

       2: 将基于事物复制变更为基于日志的复制
          应用场景(由于工具或接入的第三方应用不支持事物的复制,则要改为基于日志的复制)
      
    先决条件
        (1)集群中所有的服务器版本均高于5.7.6
    (2)集群中所有的服务器gtid_mode都设置为on(使用 show variables like 'gtid_mode' 命令查看)

       步骤:
        (1)
       stop slave;
       change master to master_auto_position=0,master_log_file='file',master_log_pos=;  //停止事物复制,设置日志复制的日志文件和日志文件节点
       start slave; 
       (2)     
           set @@global.gtid_mode=on_permissive;            //设置gtid_mode为准备开启状态
           set @@global.gtid_mode=off_permissive;         //设置gtid_mode为准备关闭状态
       
       查看gtid_ownend是否为空字符串(在所有服务器上均要查看)
           sellect @@global.gtid_owned;
           set @@global.gtid_mode=off;   //关闭
       (3) 
           持久配置(重要操作)修改my.cnf中(所有的mysql服务器节点)
           enforce_gtid_consistency=off
       gtid_mode=off
    这个其实就是和从事物到日志复制的一个反向操作   

      更多资料相关Mysql GTID 模式详解     mysql5.6新特性GTID基本原理    MySQL 5.6 全局事务 ID(GTID)兑现原理(一)

    转自

    mysql5.7主从复制--在线变更复制类型 - CSDN博客 http://blog.csdn.net/u014739462/article/details/70183458

    mysql 5.7 gtid复制到传统复制在线切换 - zengxuewen2045的博客 - CSDN博客 http://blog.csdn.net/zengxuewen2045/article/details/52464390

  • 相关阅读:
    2019-2020-1 20175313 20175328 20175329 实验五 通讯协议设计
    2019-2020-1 20175313 《信息安全系统设计基础》第十周学习总结
    2019-2020-1 20175313 20175328 20175329 实验四 外设驱动程序设计
    2019-2020-1 20175313 《信息安全系统设计基础》第九周学习总结
    2019-2020-1 20175313 20175328 20175329 实验三 并发程序
    2019-2020-1 20175313 20175328 20175329 实验二 固件程序设计
    2019-2020-1 20175313 《信息安全系统设计基础》第七周学习总结
    2019-2020-1 20175313 20175328 20175329 实验一 开发环境的熟悉
    protobuf---messge嵌套get set
    proto变量风格
  • 原文地址:https://www.cnblogs.com/paul8339/p/8319118.html
Copyright © 2011-2022 走看看