zoukankan      html  css  js  c++  java
  • MySQL5.7 GTID在线开启与关闭【转】

    当前场景

      当前某些业务还有未开启GTID服务组,升级5.7后,如何检测是否符合开启GTID条件,如何在线修改切换使用GTID;已经升级5.7后,已经开启GTID,如何快速回滚后退;
    线上gtid如何维护等等,以上场景通过归纳下面内容解决
    • gtid_mode参数新选项值
    • online gtid enable
    • online gtid disable

    gtid_mode参数新选项

    mysql 5.7.6后,mysql提供了两个额外选项off_permissive和on_permissive
    off
    off_permissive
    on_permissive
    on
    上面四个状态变更必须是按照顺序变更,如不允许gtid_mode=off,直接变更为on_permissive;
    当设置为off_permissive,不产生GTID事务,  Slave接受不带GTID的事务(匿名事务)也接受带GTID的事务
    当设置为on_permissive时,新事务为gtid事务,slave接受GTID事务也接受不带GTID事务
    gtid值master 与slave 兼容性列表
    上表说明
    Y: 表示master和slave的gtid值是兼容的
    N:表示master和slave的gtid值是不兼容的
    Y*:表示auto_positioning是可用的

    online gtid enable 

    限制条件: mysql 版本需5.7.6之后;所有server gtid_mode=off
    1 、在每一台服务器上执行。err log没有任何warning产生 ,这是非常重要的一步,确保没有error log产生继续step 2;主要验证是否可以开启gtid,如create table select* from table 不支持事件
     set @@global.enforce_gtid_consistency=warn;

    2、在每一台server上执行

    set @@global.enforce_gtid_consistency=on;
    3、每一台server 执行,在那一台服务器执行没有先后之分
    set @@global.gtid_mode=off_permissive;
    4、每一台server 执行,执行顺序没有先后之分,要保证下一步操作之前,上面的操作都已在所有server上执行过
    set @@global.gtid_mode=on_permissive;
    5、保证每一台ongoing_anonymous_transaction_count状态值为零
    show status like 'ongoing_anonymous_transaction_count';
    6、等待步骤5生成的所有事务复制到所有服务器,此时不需要停止服务器更新,要保证所有的匿名事务都已经复制
    7、步骤六完成,基本上可以进行步骤8.(此处没有考虑备份和restore情况)
    8、设置 gtid_mode=on 
    set @@global.gtid_mode=on;
    9、持久化my.cnf ,每台slave上执行
    stop slave;
     change master to master_auto_position=1 ;
     start slave;

    online gtid disable

    限制:所有server必须5.7.6之后;gtid_mode=on
    1、每一台slave上执行
     stop slave;
     change master to master_auto_position=0,master_log_file='mysql-bin.000383',master_log_pos= 245710922 ;
     start slave;
    2、在每一台server上执行
     set @@global.gtid_mode=on_permissive;
    3、在每一台server上执行 保证下一步操作之前,上面的操作都已在所有server上执行过
    set @@global.gtid_mode=off_permissive;
    4、在每一台server上执行,保证global.gtid_owned变量字符串为空。
    select @@global.gtid_owned;
    5、等待存在于binlog 中的事物都已经apply到slave
    6、没有略过,在此过程中需关注是否有备份或restore
    7、每一台server执行
    set @@global.gtid_mode=off ;
    8、持久化gtid_mode=off 到my.cnf配置文件
     
    转自

    MySQL5.7 GTID在线开启与关闭 - CSDN博客
    http://blog.csdn.net/aeolus_pu/article/details/78502846

  • 相关阅读:
    Spark开发-SparkUDAF(二)
    Spark开发-Spark UDAF(一)
    Spark开发-Spark中类型安全UDAF开发示例
    Spark开发_构建TypeSafe的Dataset
    布隆过滤器(Bloom Filter)
    一个 Spark 应用程序的完整执行流程
    Spark的RPC
    Spark调优
    Hbase系列文章
    Flink怎么做到精确一次的?
  • 原文地址:https://www.cnblogs.com/paul8339/p/8487422.html
Copyright © 2011-2022 走看看