MySQL 5.7在线开启GTID

开启前

和业务发邮件沟通,确认线上业务是否使用GTID的限制语法。

 

1、CREATE TABLE ... SELECT 
2、在一个事务中 CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE 
3、在一个事务中或语句中同时更新事务和非事务表,比如在一个事务中更新 innodb表和myisam表。要更新的所有非事务表是临时表除外

检测开启条件

1.数据库版本 >5.7.6 

  • select @@version; 

2.在每个mysql实例上,将ENFORCE_GTID_CONSISTENCY设置为warn,观察error log是否有警告输出(和业务的反馈邮件进行double check)

  • set @@global.enforce_gtid_consistency=warn;

3.所有的实例   gtid_mode=off

  • show variables like 'gtid_mode';

可选项:

4.检查参数是否为on(防止从5.6升级上来的5.7有未记录gtid位点的binlog获取purge值的时候会扫描至第一个binlog,io线程好几秒之后才会开始复制)

  • show variables like 'binlog_gtid_simple_recovery';

 

在线开启GTID

1.开启强一致性检测参数

  • SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;

2.在每个mysql实例上,设置GTID_MODE为off_permissive

  • SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

3.在每个mysql实例上,设置GTID_MODE为on_permissive;

  • SET @@GLOBAL.GTID_MODE = on_permissive;

4.检查传统复制参数是否为0,在每个实例上检查参数

  • SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

5.确保所有(非GTID事务)已经被完全复制到所有从库的server上

主库:show master status;

从库:SELECT MASTER_POS_WAIT(file, position);

Or

在master上:
show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
|mysql-bin.000080 | 8588 | | | |
+-----------------+----------+--------------+------------------+-------------------+

在slave上,
show slave status\G

Relay_Master_Log_File: mysql-bin.000080
Exec_Master_Log_Pos: 8588

6.开启GTID

  • SET @@GLOBAL.GTID_MODE = ON;

8.从库设置purge点

 

master:

    show master status\G

Executed_Gtid_Set: 1a3c6110-e537-11e7-85fb-782bcb1059e1:1-86502

    show global  variables like 'gtid_purged';

    gtid_purged   | 1a3c6110-e537-11e7-85fb-782bcb1059e1:1-2,2dq23510-e537-11e7-85fb-782bcb1059e1:76

 

slave:

  • stop slave;
  • show slave status\G          -----------查看gtid_executed点,记录position复制位点,防止卡库需要回滚。
  • reset master;
  • set global gtid_purged='1a3c6110-e537-11e7-85fb-782bcb1059e1:1-86505,2dq23510-e537-11e7-85fb-782bcb1059e1:76' ---------------主库execute和purge的uuid并集,主库uuid的trxid和从库执行到的位点一样

7.添加slave自动发现主库gtid点

  •  CHANGE MASTER TO MASTER_AUTO_POSITION = 1 ;
  •  START SLAVE ;

8.参数写到配置文件中!!

  • gtid_mode = on
  • enforce_gtid_consistency=on

快速回滚后退

1、停止复制

  • STOP SLAVE
  • CHANGE MASTER TO MASTER_AUTO_POSITION = 0;

2、转换为传统的位点复制(show slave status可以看到)

  • CHANGE MASTER TO MASTER_AUTO_POSITION = 0, MASTER_LOG_FILE = file, MASTER_LOG_POS = position ;
  • START SLAVE;

2、每个实例上设置ON_PERMISSIVE

  • SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

3、每个实例上设置OFF_PERMISSIVE

  • SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

4、检查持有的gtid是否为0

  • SELECT @@GLOBAL.GTID_OWNED;

5、关闭GTID复制

  • SET @@GLOBAL.GTID_MODE = OFF;

6、关闭强一致性检测

  • set @@global.enforce_gtid_consistency=OFF

6、写入到配置文件中

GLOBAL.GTID_MODE = OFF;

enforce_gtid_consistency=OFF

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值