zoukankan      html  css  js  c++  java
  • 在线修改GTID模式

    在线修改GTID模式

    1、 在每一台机器上执行命令

    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
    
    这是很重要的一步,必须确保服务器上没有违反GTID规范的SQL,否则当设置为GTID模式后,
    这些业务SQL会被拒绝执行,建议设置上面变量值间隔一天后errorLog没有警告,才可进行下一步。
    

    2、 在每一台服务器上执行

    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    
    上面参数表示GTID模式下一些SQL会被拒绝执行,有:create table ...select ....,CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE,在一个事务中更新事务表和非事务表。
    

    3、 在每一台服务器上执行

    SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
    
    表示采用匿名事务记录binlog,slave可以兼容GTID事务和匿名事务,执行该命令没有顺序可言,但是必须每个机器都要执行。
    

    4、在每一台服务器上执行

    SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
    
    表示采用GTID事务记录binlog,slave可以兼容GTID事务和匿名事务,执行该命令没有顺序可言,但是必须每个机器都要执行。
    

    5、等待步骤5前产生的事务(匿名事务)全部在slave都已应用完成

    6.1)在master上执行:show master status;记录file和pos
    6.2) 在所有slave执行:SELECT MASTER_POS_WAIT('file', pos);如果执行结果都为0表示都已经应用完成,可以进行下一步,否则需要一直等待完成。
    
    方法二:在每一台slave上都执行show master status;查看Executed_Gtid_Set是否有值,如果不为空了,说明已经开始使用GTID复制了
    

    6、在每一台服务器上执行

    SET @@GLOBAL.GTID_MODE = ON;
    

    7、在所有slave上执行

     stop slave;
     CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
     START SLAVE;
    

    8、在每一台服务器上修改my.cnf

     gtid_mode = on
     enforce_gtid_consistency = 1
  • 相关阅读:
    NET5 WebApi 解决跨域问题
    CentOS7安装MYSQL
    VMWare安装CentOS7
    MSSQL还原数据库,更改用户登陆权限
    Vue自定义页面路由
    解决VSCODE"因为在此系统上禁止运行脚本"报错
    简析 HTTP 2.0 多路复用
    Git放弃本地修改,强制拉取最新版
    eclipse安装OpenExplorer插件--快速打开文件目录
    git统计某段时间内代码的修改量/总代码量
  • 原文地址:https://www.cnblogs.com/mysql-dba/p/9901643.html
Copyright © 2011-2022 走看看