阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL5.6 -> MySQL5.7 跨版本多源复制(Multi-Source Replication)

421次阅读
没有评论

共计 5213 个字符,预计需要花费 14 分钟才能阅读完成。

MySQL 多源复制支持【多个低版本 ->MySQL 5.7】的结构, 这样就可以让多个实例的 schema 汇聚在一台实例上,而且无需升级 mysql 版本并避免未知风险, 用户只需要给这些实例安一个 MySQL 5.7 作为 slave 就可以了。

当然 Slave 必须为 MySQL 5.7

本次实验将使用 MySQL 5.6.x 作为多“主”。

〇 测试环境:
OS:CentOS 6.5
master_1: 192.168.1.185(MySQL 5.6.30)
master_2: 192.168.1.186(MySQL 5.6.30)
slave: 192.168.1.1.187(MySQL 5.7.15)

〇 配置:
master_1 相关配置:

  1. [mysqld]
  2. server_id    = 185
  3. logbin      = master_1
  4. logbinindex    = master_1.index


master_2 相关配置:

  1. [mysqld]
  2. server_id    = 186
  3. logbin      = master_2
  4. logbinindex    = master_2.index

slave 相关配置:

  1. [mysqld]
  2. server_id    = 187
  3. relaylog    = slave
  4. relaylogindex           = slave.index
  5. # 多源复制结构中的 slave,官方要求 masterinfo 和 relayloginfo 存放处必须为 TABLE.
  6. # 如果为 FILE,则在添加多个 master 时,会失败:ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY.
  7. masterinforepository    = TABLE
  8. relayloginforepository = TABLE

〇 为 master_1 & master_2 上建立复制用户:

  1. GRANT REPLICATION SLAVE ON *.* to repl@‘192.168.1.187’ IDENTIFIED BY ‘repl’;
  2. FLUSH PRIVILEGES;

〇 测试数据准备:
master_1 测试数据:

  1. master_1> FLUSH LOGS;
  2. Query OK, 0 rows affected (0.00 sec)
  3. master_1> SHOW BINARY LOGS; — 记住当前 binlog 的 name 和 position
  4. +++
  5. | Log_name        | File_size |
  6. +++
  7. | master_1.000001 | 166       |
  8. | master_1.000002 | 455       |
  9. | master_1.000003 | 120       |
  10. +++
  11. 3 rows in set (0.00 sec)
  12. master_1> CREATE DATABASE master_1;
  13. Query OK, 1 row affected (0.03 sec)

master_2 测试数据:

  1. master_2> FLUSH LOGS;
  2. Query OK, 0 rows affected (0.00 sec)
  3. master_2> SHOW BINARY LOGS;    — 记住当前 binlog 的 name 和 position
  4. +++
  5. | Log_name       | File_size |
  6. +++
  7. | master_2.000001 | 166       |
  8. | master_2.000002 | 455       |
  9. | master_2.000003 | 120       |
  10. +++
  11. 3 rows in set (0.00 sec)
  12. master_2> CREATE DATABASE master_2;
  13. Query OK, 1 row affected (0.02 sec)

〇 在 slave 上执行:

  1. salve> CHANGE MASTER TO
  2.     –> MASTER_HOST=‘192.168.1.185’,
  3.     –> MASTER_USER=‘repl’,
  4.     –> MASTER_PORT=3306,
  5.     –> MASTER_PASSWORD=‘repl’,
  6.     –> MASTER_LOG_FILE=‘master_1.000003’,
  7.     –> MASTER_LOG_POS=120
  8.     –> FOR CHANNEL ‘master_1’;
  9. Query OK, 0 rows affected, 2 warnings (0.02 sec)    — 此处产生的 warnings 是一些安全建议和警告,本实验无视。
  10. salve> CHANGE MASTER TO
  11.     –> MASTER_HOST=‘192.168.1.186’,
  12.     –> MASTER_USER=‘repl’,
  13.     –> MASTER_PORT=3306,
  14.     –> MASTER_PASSWORD=‘repl’,
  15.     –> MASTER_LOG_FILE=‘master_2.000003’,
  16.     –> MASTER_LOG_POS=120
  17.     –> FOR CHANNEL ‘master_2’;
  18. Query OK, 0 rows affected, 2 warnings (0.02 sec)
  19. slave> START SLAVE;
  20. Query OK, 0 rows affected (0.01 sec)
  21. salve> SHOW DATABASES;    — 此时在 master_1 和 master_2 上的 binlog events 已经被正常的 apply 了
  22. ++
  23. | Database            |
  24. ++
  25. | information_schema |
  26. | master_1           |
  27. | master_2           |
  28. | mysql             |
  29. | performance_schema |
  30. | sys                |
  31. ++
  32. 6 rows in set (0.00 sec)

最后通过 start slave status 即可查到复制状态

  1. slave> SHOW SLAVE STATUS\G
  2. *************************** 1. row ***************************
  3.                Slave_IO_State: Waiting for master to send event
  4.                   Master_Host: 192.168.1.185
  5.                   Master_User: repl
  6.                   Master_Port: 3306
  7.                 ……………………………………………………
  8.              Slave_IO_Running: Yes
  9.             Slave_SQL_Running: Yes
  10.                 ……………………………………………………
  11.              Master_Server_Id: 185
  12.                   Master_UUID: ee1f8704-58c4-11e6-95b5-000c297f23b7
  13.              Master_Info_File: mysql.slave_master_info
  14.                     SQL_Delay: 0
  15.           SQL_Remaining_Delay: NULL
  16.       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
  17.                ……………………………………………………
  18.                  Channel_Name: master_1
  19.            Master_TLS_Version:
  20. *************************** 2. row ***************************
  21.                Slave_IO_State: Waiting for master to send event
  22.                   Master_Host: 192.168.1.186
  23.                   Master_User: repl
  24.                   Master_Port: 3306
  25.                 Connect_Retry: 60
  26.                ……………………………………………………
  27.              Slave_IO_Running: Yes
  28.             Slave_SQL_Running: Yes
  29.                ……………………………………………………
  30.              Master_Server_Id: 186
  31.                   Master_UUID: 53774f2d-7e14-11e6-8900-000c298e914c
  32.              Master_Info_File: mysql.slave_master_info
  33.                     SQL_Delay: 0
  34.           SQL_Remaining_Delay: NULL
  35.       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
  36.                ……………………………………………………
  37.                  Channel_Name: master_2
  38.            Master_TLS_Version:
  39. 2 rows in set (0.00 sec)

 

〇 测试:
master_1 上操作:

  1. master_1> CREATE TABLE master_1.test_table(id int);
  2. Query OK, 0 rows affected (0.05 sec)
  3. master_1> INSERT INTO master_1.test_table SELECT 666666;
  4. Query OK, 1 row affected (0.01 sec)
  5. Records: 1 Duplicates: 0 Warnings: 0

master_2 上操作:

  1. master_2> CREATE TABLE master_2.test_table(massage varchar(16));
  2. Query OK, 0 rows affected (0.02 sec)
  3. master_2> INSERT INTO master_2.test_table SELECT ‘ 嘿嘿嘿 ’;
  4. Query OK, 1 row affected (0.00 sec)
  5. Records: 1 Duplicates: 0 Warnings: 0
  6. master_2> INSERT INTO master_2.test_table SELECT ‘ 三阳之炎 ’;
  7. Query OK, 1 row affected (0.00 sec)
  8. Records: 1 Duplicates: 0 Warnings: 0

slave 上操作:

  1. salve> SELECT id FROM master_1.test_table;
  2. ++
  3. | id     |
  4. ++
  5. | 666666 |
  6. ++
  7. 1 row in set (0.00 sec)
  8. salve> SELECT massage FROM master_2.test_table;
  9. ++
  10. | massage      |
  11. ++
  12. | 嘿嘿嘿        |
  13. | 三阳之炎      |
  14. ++
  15. 2 rows in set (0.00 sec)

 

〇 其他相关语法:

  1. START/STOP/RESET ALL/RESET SLAVE FOR CHANNEL ‘XXX;
  2.  
  3. SHOW SLAVE STATUS FOR CHANNEL ‘XXX’;

ps.
与上述传统 position 方式类似,GTID 方式配置起来也类似,开启 GTID 后,需要注意使用 FOR CHANNEL ‘xxx’ 关键字即可,比如:

  1. CHANGE MASTER TO
  2.     MASTER_HOST=,
  3.     MASTER_USER=‘repl’,
  4.     MASTER_PORT=3306,
  5.     MASTER_PASSWORD=‘repl’,
  6.     MASTER_AUTO_POSITION = 1
  7.     FOR CHANNEL ‘master_1’;


多台主机的 schema 名字不可以一样,(比如 master_1 为 db_00 … db_09 共 10 库,master_2 为 db_10 … db_19,master_3 为 db_20 … db_29 ……)

参考文档:
MySQL 5.7 Reference Manual 14 SQL Statement Syntax – 14.4.2.1 CHANGE MASTER TO Syntax
MySQL 5.7 Reference Manual 18 Replication – 18.1.4 MySQL Multi-Source Replication

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/142387.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5213字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7806471
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
这个开源软件130k的star数!让电脑轻松管理安卓手机的神器

这个开源软件130k的star数!让电脑轻松管理安卓手机的神器

这个开源软件 130k 的 star 数!让电脑轻松管理安卓手机的神器 大家好,我是星哥。今天给大家安利一款宝...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...