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)

    学而不思则罔,思而不学则殆
  • 相关阅读:
    vbs获取当月的第一天和最后一天的日期
    vbscript基础篇
    win10专业版激活
    python selenium中Excel数据维护
    python里面的xlrd模块详解
    python 转换为json时候 汉字编码问题
    用VBA得到EXCEL表格中的行数和列数
    表关联关系,表的复制
    存储引擎,详细建表语句,数据类型,约束
    数据库基础
  • 原文地址:https://www.cnblogs.com/linyu51/p/14914468.html
Copyright © 2011-2022 走看看