zoukankan      html  css  js  c++  java
  • MySQL5.7在线开启/关闭GTID

    环境介绍
    Part1:写在最前

    截止本文撰写当日,MySQL5.7.16是官网的最新稳定版,本文将用MySQL5.7.16来进行演示。从MySQL5.6开始,支持了GTID复制模式,这种模式其实是把双刃剑,虽然容易搭建主从复制了,但使用不当,就容易出现一些错误,例如error 1236。在MySQL5.6如果开启GTID模式,需要在my.cnf中加入以下几个参数:

    ①log-bin=mysql-bin

    ②binlog_format=row

    ③log_slave_updates=1

    ④gtid_mode=ON

    ⑤enforce_gtid_consistency=ON

    Warning:警告这里的一些参数不是动态参数,也就是需要重启mysql才能生效。

    Part2:环境

    [root@HE1 ~]# mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 4
    Server version: 5.7.16-log MySQL Community Server (GPL)
     
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
     
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
     
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

     mysql> select version();      --查询当前数据库版本

     mysql> show global variables like 'log_slave%';    查看日志是否开启,这里显示关闭,在5.7版本这里不用开启

    Part2:传统复制模式切换为GTID

    ①主库从库都需执行以下命令

    mysql> set global gtid_mode='OFF_PERMISSIVE';
    Query OK, 0 rows affected (0.01 sec)
    mysql> set global gtid_mode='ON_PERMISSIVE';
    Query OK, 0 rows affected (0.01 sec)
    mysql> set global enforce_gtid_consistency=ON;
    Query OK, 0 rows affected (0.00 sec)
    mysql> set global gtid_mode='ON';
    Query OK, 0 rows affected (0.00 sec)

    ②主库插数从库执行

    mysql> show master status;
    +------------------+----------+--------------+------------------+----------------------------------------+
    | File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                      |
    +------------------+----------+--------------+------------------+----------------------------------------+
    | mysql-bin.000005 |      154 |              |                  | 82b160c7-9a8f-11e6-8412-000c29c6361d:1 |
    +------------------+----------+--------------+------------------+----------------------------------------+
    1 row in set (0.00 sec)

    以看到gtid_set下面有数了,这说明已经开启了gtid模式

    Part3:GTID变更为传统模式

    mysql> stop slave;-----从库执行
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> set global gtid_mode='ON_PERMISSIVE';
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> set global gtid_mode='OFF_PERMISSIVE';
    Query OK, 0 rows affected (0.01 sec)
     
    mysql> CHANGE MASTER TO MASTER_AUTO_POSITION=0;
    Query OK, 0 rows affected (0.05 sec)
     
    mysql> set global gtid_mode='OFF';
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> show variables like '%gtid%';
    +----------------------------------+----------------------------------------+
    | Variable_name                    | Value                                  |
    +----------------------------------+----------------------------------------+
    | binlog_gtid_simple_recovery      | ON                                    |
    | enforce_gtid_consistency        | ON                                    |
    | gtid_executed_compression_period | 1000                                  |
    | gtid_mode                        | OFF                                    |
    | gtid_next                        | AUTOMATIC                              |
    | gtid_owned                      |                                        |
    | gtid_purged                      | 82b160c7-9a8f-11e6-8412-000c29c6361d:1 |
    | session_track_gtids              | OFF                                    |
    +----------------------------------+----------------------------------------+
    8 rows in set (0.01 sec)


    可以看到这里GTID模式已经关了,下面再次开启GTID模式来观察id的变化

     mysql> set global gtid_mode='OFF_PERMISSIVE';
    Query OK, 0 rows affected (0.01 sec)
    mysql> set global gtid_mode='ON_PERMISSIVE';
    Query OK, 0 rows affected (0.01 sec)
    mysql> set global enforce_gtid_consistency=ON;
    Query OK, 0 rows affected (0.00 sec)
    mysql> set global gtid_mode='ON';
    Query OK, 0 rows affected (0.01 sec)
    mysql> 
    mysql> 
    mysql> show variables like '%gtid%';
    +----------------------------------+----------------------------------------+
    | Variable_name                    | Value                                  |
    +----------------------------------+----------------------------------------+
    | binlog_gtid_simple_recovery      | ON                                    |
    | enforce_gtid_consistency        | ON                                    |
    | gtid_executed_compression_period | 1000                                  |
    | gtid_mode                        | ON                                    |
    | gtid_next                        | AUTOMATIC                              |
    | gtid_owned                      |                                        |
    | gtid_purged                      | 82b160c7-9a8f-11e6-8412-000c29c6361d:1 |
    | session_track_gtids              | OFF                                    |
    +----------------------------------+----------------------------------------+
    8 rows in set (0.00 sec)
     
    主库做操作,从库执行如下命令会看到gtid_set的值在变化
    mysql> show master status;
    +------------------+----------+--------------+------------------+------------------------------------------+
    | File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
    +------------------+----------+--------------+------------------+------------------------------------------+
    | mysql-bin.000011 |      154 |              |                  | 82b160c7-9a8f-11e6-8412-000c29c6361d:1-2 |
    +------------------+----------+--------------+------------------+------------------------------------------+
    1 row in set (0.00 sec)
     
    mysql> show master status;
    +------------------+----------+--------------+------------------+------------------------------------------+
    | File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
    +------------------+----------+--------------+------------------+------------------------------------------+
    | mysql-bin.000011 |      154 |              |                  | 82b160c7-9a8f-11e6-8412-000c29c6361d:1-3 |
    +------------------+----------+--------------+------------------+------------------------------------------+
    1 row in set (0.00 sec)

    学而不思则罔,思而不学则殆
  • 相关阅读:
    使用视图显示Oracle ACFS信息
    ORA-00600: internal error code, arguments: [ktecgsc:kcbz_objdchk], [0], [0], [1], [], [], [], [], [], [], [], []
    ORA-00600 arguments: [4194]
    闪回查询
    改写exists
    淘宝mysql月报连接
    pdb表空间巡检脚本
    Oracle表空间名称不能超过30个字符
    PL/SQL package SYS.DBMS_BACKUP_RESTORE version 19.03.00.00 in TARGET database is not current
    Linux查看进程内存占用
  • 原文地址:https://www.cnblogs.com/linyu51/p/14914468.html
Copyright © 2011-2022 走看看