1. GTID复制转换成传统复制

1.1 环境准备

类型

ip

prot

server-id

master

192.168.56.100

3307

1003307

slave

192.168.56.200

3307

2003307

1.2 停止slave

root@localhost [(none)] 09:38:41>stop slave

1.3 查看当前主从状态

记录Relay_Master_Log_File和Exec_Master_Log_Pos信息。

root@localhost [(none)] 09:41:22>show slave status\G

*************************** 1. row ***************************

Slave_IO_State:

Master_Host: 192.168.56.100

Master_User: repl

Master_Port: 3307

Connect_Retry: 60

Master_Log_File: my3307_binlog.000005

Read_Master_Log_Pos: 194

Relay_Log_File: mysqldb2-relay-bin.000010

Relay_Log_Pos: 375

Relay_Master_Log_File: my3307_binlog.000005

Slave_IO_Running: No

Slave_SQL_Running: No

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: 194

Relay_Log_Space: 585

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: NULL

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: 1003307

Master_UUID: 3a068bf8-cdeb-11e8-8176-080027b0b461

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

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: 3a068bf8-cdeb-11e8-8176-080027b0b461:1-12

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

1.4 change master

根据上面记录的Relay_Master_Log_File和Exec_Master_Log_Pos信息,change master:

root@localhost [(none)] 09:41:26>change master to master_log_file='my3307_binlog.000005',master_log_pos=194,master_auto_position=0;

Query OK, 0 rows affected (0.01 sec)

#参数解释:

master_auto_position=0 表示禁用master_auto_position

1.5 启动主从复制

root@localhost [test] 09:51:28>start slave;

1.6 在线关闭主从服务器的GTID

root@localhost [test] 09:55:01> set global gtid_mode=on_permissive;

Query OK, 0 rows affected (0.01 sec)

root@localhost [test] 09:55:25> set global gtid_mode=off_permissive;

Query OK, 0 rows affected (0.01 sec)

root@localhost [test] 09:55:58> set global gtid_mode=off;

Query OK, 0 rows affected (0.01 sec)

root@localhost [test] 09:56:09> set global enforce_gtid_consistency = 0;

Query OK, 0 rows affected (0.00 sec)

root@localhost [test] 09:57:34> show variables like '%gtid%';

+----------------------------------+-----------+

| Variable_name | Value |

+----------------------------------+-----------+

| binlog_gtid_simple_recovery | ON |

| enforce_gtid_consistency | OFF |

| gtid_executed_compression_period | 1000 |

| gtid_mode | OFF |

| gtid_next | AUTOMATIC |

| gtid_owned | |

| gtid_purged | |

| session_track_gtids | OFF |

+----------------------------------+-----------+

8 rows in set (0.01 sec)

可以把 gtid_mode=off 与 enforce_gtid_consistency=OFF 写入配置文件my.cnf中,重启之后也能生效。

2. 传统复制转换成GTID复制

2.1 环境准备

类型

ip

prot

server-id

master

192.168.56.100

3306

1003306

slave

192.168.56.200

3306

2003306

2.2 将enforce_gtid_consistency设置为warn

在MySQL每个实例上, 将enforce_gtid_consistency设置为warn

root@localhost [(none)] 10:21:01> set @@global.enforce_gtid_consistency=warn;

【注意】:执行完这条语句后,如果出现GTID不兼容的语句用法,会在error log记录相关信息,那么需要调整该程序避免不兼容的写法,直到完全没有不兼容的语句。

2.3 将enforce_gtid_consistency设置为on

在 2.2完成后,如果没有不兼容语句,可以把MySQL每个实例的ENFORCE_GTID_CONSISTENCY值设置为on。

root@localhost [(none)] 11:05:11> set @@global.enforce_gtid_consistency=on;

Query OK, 0 rows affected (0.00 sec)

2.4 设置GTID模式为off_permissive

将所有MySQL实例的GTID模式设置为off_permissive

root@localhost [(none)] 11:06:55>SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

Query OK, 0 rows affected (0.01 sec)

2.5 设置GTID模式为on_permissive

root@localhost [(none)] 11:12:20> SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

Query OK, 0 rows affected (0.01 sec)

2.6 检查从库Ongoing_anonymous_transaction_count状态值

检查从库Ongoing_anonymous_transaction_count状态值是否为0,如果为0,一味着没有等待的事务,可以进行下一步操作

root@localhost [(none)] 11:13:09>SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

+-------------------------------------+-------+

| Variable_name | Value |

+-------------------------------------+-------+

| Ongoing_anonymous_transaction_count | 0 |

+-------------------------------------+-------+

1 row in set (0.00 sec)

2.7 确保所有的匿名事务已经被完全复制到所有的slave上

root@localhost [(none)] 11:29:55>show slave status\G

*************************** 1. row ***************************

...

Relay_Master_Log_File: my3306_binlog.000090

...

Exec_Master_Log_Pos: 194

...

#在slave上使用函数:

root@localhost [(none)] 11:30:01>SELECT MASTER_POS_WAIT('my3306_binlog.000090', 194);

+----------------------------------------------+

| MASTER_POS_WAIT('my3306_binlog.000090', 194) |

+----------------------------------------------+

| 0 |

+----------------------------------------------+

1 row in set (0.00 sec)

返回结果大于或等于0就说明匿名事务已经全部复制完成

2.8 设置GTID_MODE为on

root@localhost [(none)] 11:31:36>SET @@GLOBAL.GTID_MODE = ON;

Query OK, 0 rows affected (0.01 sec)

2.9 change master

root@localhost [(none)] 11:37:17>STOP slave;

Query OK, 0 rows affected (0.00 sec)

root@localhost [(none)] 11:37:24>change master to master_auto_position=1;

Query OK, 0 rows affected (0.00 sec)

root@localhost [(none)] 11:37:52>start slave;

Query OK, 0 rows affected (0.00 sec)

mysql 组复制和传统复制_MySQL的GTID复制与传统复制的相互切换相关推荐

  1. mysql主主 主键冲突_mysql主从复制原理,主主复制时主键冲突解决

    主从复制原理: 1.master的增删改记录写入binlog: 2.slave的I/O Thread(负责读取master的binlog)读取binlog并将记录写入relaylog: 3.slave ...

  2. MySQL内部开发人员如何看待MySQL组复制?

    MySQL因为高性能.可扩展性和可用性被广泛应用于Web应用程序,成为支持高流量社交媒体.电商应用程序以及快速成长企业的IT平台基础.在MySQL 5.7.17版本中,MySQL Group Repl ...

  3. Mysql组复制(MGR)——技术细节

    本文提供mysql组复制相关的更多技术细节. 一. 组复制插件架构 Mysql组复制是一个mysql插件,且其构建于已有mysql复制架构之上,其利用了类似二进制日志,基于行的日志及全局事务标识符等的 ...

  4. 使用MySQL组复制的限制和局限性

    本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...

  5. Mysql组复制故障恢复测试

    在前面的两篇文章中,介绍了mysql组复制的特点及配置过程,本文演示mysql单组复制下的模拟故障测试. 一.组复制所有成员服务器宕机重启后的恢复 连接所有的mysql实例查询当前的组复制成员情况,状 ...

  6. mysql 组复制 不一致_使用MySQL组复制的限制和局限性

    本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...

  7. Mysql组复制(MGR)——常问的问题

    本文提供常被问到问题的答案. 1.复制组中最多能有多少个mysql服务器? 复制组最多包含9个mysql服务器.尝试向已有9个服务器的组添加另外的服务器将被拒绝. 2.组内服务器间如何连接? 组内服务 ...

  8. Mysql组复制(MGR)——前提及限制

    本文将对组复制的前提条件和限制进行列举和解释. 一.组复制前提 想用组复制的服务器实例必须满足如下前提条件: 1.基础架构 1)InnoDB存储引擎.数据必须存储于InnoDB事务存储引擎.事务被乐观 ...

  9. mysql组复制(MGR)——部署

    mysql组复制作为插件提供给mysql服务器,组内的每个服务器都要求配置和安装该插件.本文提供创建一个至少3个服务器的复制组所需的详细步骤. 一.部署单主模式的组复制 组内的每个服务器实例能运行在独 ...

  10. mysql组复制(MGR)——背景

    本文提供mysql组复制相关的背景信息. 创建容错系统的最常用方式是采用组件冗余方式,换句话说,就是组件能被移除且系统应该继续如期操作.这产生了一系列将系统复杂度上升到不同等级的挑战.特别是,复制数据 ...

最新文章

  1. element ui 图片控件 排序_JAVA全栈面试前端基础之四 Vue+Element框架快速开发
  2. JS高级程序设计第五章读书笔记
  3. linux如何设置awesome字体,Awesome简单配置
  4. 到底是先更新数据库还是先更新缓存?
  5. Oracle note 基礎入門篇1
  6. 中青评论:家政本科招生难,专业名字误终身?
  7. c# automapper 使用
  8. 使用文本编辑器和jdk_JDK 14:记录,文本块等
  9. Springboot集成ES启动报错
  10. 小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信
  11. CentOS RabbitMQ安装
  12. PyQt4开发环境搭建指导
  13. python input nameerror_用python写的,运行时出现NameError: name 'raw_input' is not defined 这是什么原因?求解...
  14. linux 软件逆向工程,黑莓开源软件逆向工程 PE 文件的工具PE tree作为IDA插件的安装方式...
  15. Cmake编译时无法打开包括文件: “pthread.h”
  16. 怎么理解JS Promise
  17. 【Kafka】(二十四)轻量级流计算 Kafka Streams 实践总结
  18. FilterConfig的作用
  19. 计算机网络期末复习知识点
  20. IPV4地址和子网理解

热门文章

  1. 听法国设计师大卫·维森特讲述他与CorelDRAW的渊源
  2. Java8 lambda函数式编程
  3. mongodb笔记(三)
  4. P3805 【模版】manacher算法(manacher)
  5. 使用Log Explorer恢复数据
  6. httpWebRequest和webRequest的区别
  7. EF中的Code First
  8. Gym-101466K Random Numbers(线段树,数学,唯一分解定理)
  9. opencv-python教程学习系列2-读取/显示/保存图像
  10. 字节 字符 utf-8 unicode 以及提交表单验证字符长度 .......