环境介绍

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:环境1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28[root@HE1 ~]# mysql -uroot -p  Enterpassword:  Welcometo the MySQL monitor.  Commandsend with ;or \g.  Your MySQLconnection idis 4  Server version: 5.7.16-log MySQL Community Server (GPL)     Copyright (c) 2000, 2016, Oracleand/or its affiliates.All rights reserved.     Oracleis a registered trademarkof Oracle Corporationand/or its  affiliates. Other names may be trademarksof their respective  owners.     Type'help;' or '\h' for help. Type'\c' to clear thecurrent input statement.     mysql>select version();  +------------+  | version()  |  +------------+  | 5.7.16-log |  +------------+  1 rowin set (0.00 sec)  mysql> showglobal variableslike 'log_slave%';  +-------------------+-------+  | Variable_name     | Value |  +-------------------+-------+  | log_slave_updates |OFF   |  +-------------------+-------+  1 rowin set (0.00 sec)

MySQL5.6开启GTID需要开启log_slave_updates参数,否则启动报错,而5.7不在需要开启该参数。

实战

Part1:搭建传统复制模式

本文环境HE1为从,HE3为主库

[root@HE1 ~]# mysql -uroot -p  Enterpassword:  Welcometo the MySQL monitor.  Commandsend with ;or \g.  Your MySQLconnection idis 7  Server version: 5.7.16-log MySQL Community Server (GPL)     Copyright (c) 2000, 2016, Oracleand/or its affiliates.All rights reserved.     Oracleis a registered trademarkof Oracle Corporationand/or its  affiliates. Other names may be trademarksof their respective  owners.     Type'help;' or '\h' for help. Type'\c' to clear thecurrent input statement.     mysql> show slave status\G  *************************** 1. row ***************************  Slave_IO_State: Waitingfor masterto send event  Master_Host: 192.168.1.250  Master_User: mysync  Master_Port: 3306  Connect_Retry: 60  Master_Log_File: mysql-bin.000002  Read_Master_Log_Pos: 1694  Relay_Log_File: HE1-relay-bin.000002  Relay_Log_Pos: 320  Relay_Master_Log_File: mysql-bin.000002  Slave_IO_Running: Yes  Slave_SQL_Running: Yes  Replicate_Do_DB:  Replicate_Ignore_DB:  Replicate_Do_Table:  Replicate_Ignore_Table:  Replicate_Wild_Do_Table:  Replicate_Wild_Ignore_Table:  Last_Errno: 0  Last_Error:  Skip_Counter: 0  Exec_Master_Log_Pos: 1694  Relay_Log_Space: 525  Until_Condition: None  Until_Log_File:  Until_Log_Pos: 0  Master_SSL_Allowed:No  Master_SSL_CA_File:  Master_SSL_CA_Path:  Master_SSL_Cert:  Master_SSL_Cipher:  Master_SSL_Key:  Seconds_Behind_Master: 0  Master_SSL_Verify_Server_Cert:No  Last_IO_Errno: 0  Last_IO_Error:  Last_SQL_Errno: 0  Last_SQL_Error:  Replicate_Ignore_Server_Ids:  Master_Server_Id: 1250  Master_UUID: 82b160c7-9a8f-11e6-8412-000c29c6361d  Master_Info_File: /data/mysql/master.info  SQL_Delay: 0  SQL_Remaining_Delay:NULL  Slave_SQL_Running_State: Slave hasread all relay log; waitingfor more updates  Master_Retry_Count: 86400  Master_Bind:  Last_IO_Error_Timestamp:  Last_SQL_Error_Timestamp:  Master_SSL_Crl:  Master_SSL_Crlpath:  Retrieved_Gtid_Set:  Executed_Gtid_Set:  Auto_Position: 0  Replicate_Rewrite_DB:  Channel_Name:  Master_TLS_Version:  1 rowin set (0.00 sec)

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

①主库从库都需执行以下命令mysql>set global gtid_mode='OFF_PERMISSIVE';  Query OK, 0rows affected (0.01 sec)  mysql>set global gtid_mode='ON_PERMISSIVE';  Query OK, 0rows affected (0.01 sec)  mysql>set global enforce_gtid_consistency=ON;  Query OK, 0rows affected (0.00 sec)  mysql>set global gtid_mode='ON';  Query OK, 0rows 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 rowin 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 rowsin set (0.01 sec)

可以看到这里GTID模式已经关了,下面再次开启GTID模式来观察id的变化mysql>set global gtid_mode='OFF_PERMISSIVE';  Query OK, 0rows affected (0.01 sec)  mysql>set global gtid_mode='ON_PERMISSIVE';  Query OK, 0rows affected (0.01 sec)  mysql>set global enforce_gtid_consistency=ON;  Query OK, 0rows affected (0.00 sec)  mysql>set global gtid_mode='ON';  Query OK, 0rows affected (0.01 sec)  mysql>  mysql>  mysql> show variableslike '%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                                    |  +----------------------------------+----------------------------------------+  8rows 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 rowin 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 rowin set (0.00 sec)

——总结——

MySQL5.7开启/关闭GTID,不用重启mysql,这大大提高了GTID的易用性。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。

mysql 开启gtid_MySQL 在线开启/关闭GTID相关推荐

  1. mysql5.7跳过gitd_MySQL5.7在线开启/关闭GTID

    MySQL5.7在线开启/关闭GTID 环境介绍 Part1:写在最前 截止本文撰写当日,MySQL5.7.16是官网的最新稳定版,本文将用MySQL5.7.16来进行演示.从MySQL5.6开始,支 ...

  2. 在线开关MySQL5.7 GTID_MySQL5.7 GTID在线开启与关闭【转】

    当前场景 当前某些业务还有未开启GTID服务组,升级5.7后,如何检测是否符合开启GTID条件,如何在线修改切换使用GTID:已经升级5.7后,已经开启GTID,如何快速回滚后退: 线上gtid如何维 ...

  3. mysql 5.6 开启gtid_MySQL 5.6 GTID 原理以及使用

    简介 GTID是MySQL 5.6的新特性,其全称是Global Transaction Identifier,可简化MySQL的主从切换以及Failover.GTID用于在binlog中唯一标识一个 ...

  4. mysql在线开启并行复制_mysql 5.7开启并行复制

    开启多线程复制,默认关键的参数有两个: mysql> show variables like 'slave_parallel_%'; +------------------------+---- ...

  5. MySQL数据库服务的简单开启和关闭

    MySQL数据库服务的简单开启和关闭 很多同学刚开始学习数据库的时候是直接打开桌面的图标,双击然后进入输入密码就OK,但是在点开之后发现数据库可能不能用 其原因是服务没有开服务器没有开当然不能用了 怎 ...

  6. linux开放mysql远程连接_Linux开启MySql远程连接

    Linux - CentOS7.0给Mysql数据库开启远程连接 博客分类: Liunx 默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放 首先登录 ...

  7. Host ‘XXX‘ is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号

    Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号 参考文章: (1)Host 'XXX' is ...

  8. mysql tcp 远程_MySQL开启远程访问

    MySQL开启远程访问 首先开启防火墙端口 每个机器开启的命令不同: Firewall: 开启端口: firewall-cmd --permanent --add-port=3306/tcp 重新加载 ...

  9. mysql 本地连接_mysql开启远程连接及本地连接

    问题描述 在本机windows上连接linux服务器上的mysql报错:host'XXX' is not allowed to connect to this mysql server. 这个错误是由 ...

最新文章

  1. Python+selenium+firefox模拟登录微博并爬取数据(1
  2. 【Android View基础】View中几个容易混淆的距离及坐标量
  3. python数据分析报告的格式_Python数据报表之Excel操作模块用法分析
  4. python【力扣LeetCode算法题库】300 最长上升子序列(动态规划)
  5. Imageloader2-整体思路
  6. ios 添加浮动效果_iOS实现拖拽View跟随手指浮动效果
  7. Windows下更改pip镜像源
  8. UOJ #514 [UR #19]通用测评号 (容斥原理、DP)
  9. TensorFlow 学习指南 四、分布式
  10. PHP更新小程序,微信小程序Tab页切换更新数据详细介绍
  11. Paradigm 已对 NFT 艺术品铸造和收藏协议 ZORA 进行投资
  12. 图片 过度曝光_实际拍摄中,经常遇到曝光不足或过曝的结果,6种手段帮你解决...
  13. 外网不能访问图片的问题
  14. 几岁孩子可以学python_编程python适合多大孩子学
  15. 小暑海报文案|小暑海报设计图片素材
  16. 讯飞输入法pad版x86_讯飞输入法Pad版软件下载_讯飞输入法Pad版app下载_讯飞输入法Pad版安卓下载_亲亲宝贝网...
  17. 卷积核后输出维度shape计算公式
  18. python画速度等值线图_python画contour图
  19. 小程序地理位置接口wx.getLocation申请审核解决方法(详细说明及避坑)
  20. 我喜欢出发(汪国真)

热门文章

  1. 快速复制文件到新文件夹当中
  2. nginx配置域名转发、反向代理、负载均衡
  3. nginx根据域名转发不同ip端口
  4. 计算理论学习笔记--2
  5. Google Chrome主页被hao123劫持解决办法
  6. 键盘点击事件(坦克大战)
  7. netlify支持php吗,vuepress netlify 搭建简易博客
  8. 苏格拉底与失恋者的对话
  9. 东华大学计算机学院调剂,东华大学硕士研究生调剂要求
  10. vue移动端日历组件