MySQL级联复制中的数据同步(第二篇)(r11笔记第21天)

今天还是说说级联复制的问题情况,因为架构做了调整,我们要删除其中的一个中继节点(新加坡节点),而直接使用北京节点去连接北美的节点。

更多的信息可以参考。

MySQL级联复制中的数据同步(r11笔记第20天)

大体的架构方式如下:

如此一来,为了避免重建从库,而且没有GTID的情况下,我们可以统一规划一下偏移量,平滑迁移。

实现后的架构图如下:

看起来还是比较简单,但是偏移量真是一个比较琐碎细致的活儿。在此也感谢我的同事程振,我们一起讨论了实现的方式和细节。

大体来说,目前的北京节点的延迟较大,所以大体的思路就是停止新加坡节点的slave,(当然要保证slave的read_master_log_pos和Exec_Master_Log_Pos要追平)也可以直接停止io_thread(stop slave io_thread),或者stop slave,让北京节点去追平GAP,然后直接平滑切换到北美的节点上。

北京节点(slave)和新加坡节点(master)的偏移量情况如下:

北京(slave)

新加坡(master)

>show slave status\G

> show master status\G

Master_Log_File: binlog.000408

File: binlog.000408

Read_Master_Log_Pos: 129590180

Position: 675358376

Relay_Log_File: mysql-relay-bin.002263

Binlog_Do_DB:

Relay_Log_Pos: 25551626

Binlog_Ignore_DB:

Relay_Master_Log_File: binlog.000408

北京节点要去新加坡节点读取数据变化,得追平GAP,可以看出延迟已经很大了。

这里有一点很容易弄混淆,那就是新加坡节点(slave)的偏移量。

新加坡(slave)

> show slave status\G

Master_Log_File: binlog.000621

Read_Master_Log_Pos: 287660027

Relay_Log_File: mysql-relay-bin.002070

Relay_Log_Pos: 287660170

Relay_Master_Log_File: binlog.000621

北京节点要追平的偏移量是675358376而非287660027

过了些时间,总算是追平了,和预期的一样,是追平到了675358376。

数据如下:

北京(slave)

新加坡(master)

>show slave status\G

> show master status\G

Master_Log_File: binlog.000408

File: binlog.000408

Read_Master_Log_Pos: 675358376

Position: 675358376

Relay_Log_File: mysql-relay-bin.002281

Binlog_Do_DB:

Relay_Log_Pos: 414747263

Binlog_Ignore_DB:

Relay_Master_Log_File: binlog.000408

这个时候问题就来了,北美的slave节点已经接受数据变化,偏移量肯定在增长,而这个时候一个重要的参考依旧就是新加坡slave节点的偏移量信息。从下面可以看出偏移量已经有了重大的差别,如果没有参考基础就无从开始设置。

新加坡(slave)

北美从库(master)

> show slave status\G

> show master status\G

Master_Log_File: binlog.000621

File: binlog.000621

Read_Master_Log_Pos: 287660027

Position: 344035385

Relay_Log_File: mysql-relay-bin.002070

Binlog_Do_DB:

Relay_Log_Pos: 287660170

Binlog_Ignore_DB:

Relay_Master_Log_File: binlog.000621

接下来就是北京节点的重头戏了。开始使用change master来修改

stop slave; CHANGE MASTER TO MASTER_HOST='xxxx', MASTER_USER='repl_new', MASTER_PASSWORD='xxxx', MASTER_PORT=3306, master_log_file='binlog.000621', master_log_pos=287660027; start slave;

如上的两个重要参数就取自新加坡的从节点信息。

然后start slave之后,就可以看到偏移量开始大幅度提升。

Read_Master_Log_Pos: 288885733

很快就追平了北美从库(master)的偏移量

查看北美从库(master)的信息

北美slave节点

> show master status\G

File: binlog.000621

Position: 348627763

Binlog_Do_DB:

Binlog_Ignore_DB:

如此一来一个看似复杂的平滑迁移过程就完成了。昨天我蛮有深意的给出下面的一个级联复制图.

整个过程操作顺利完成之后,也让我对GTID这个很不错的特性更加渴望。手工来分析判断,真是很让人费神。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2016-12-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

mysql主从同步(4)-Slave延迟状态监控

之前部署了mysql主从同步环境(Mysql主从同步(1)-主从/主主环境部署梳理),针对主从同步过程中slave延迟状态的监控梳理如下: 在mysql日常维护...

3937
来自专栏闻道于事

前台分页,以及类别选择

效果: ? 前台分页 区别于后台分页的将第几页和共多少条传到后台,再从后台从数据库查询出当前页应该显示的数据返回 前台分页是将所有的数据都查出存到前台,在经过用...

4184
来自专栏耕耘实录

MySQL数据库的主从同步配置

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

2201
来自专栏Flutter入门

SDL2库(1)-移植Android 端 CMakeList 集成

项目位置 https://github.com/deepsadness/SDLCmakeDemo

1824
来自专栏cmazxiaoma的架构师之路

MySQL基于GTID主从复制的杂谈

先来回顾一下MySQL的二进制知识点。基于Row格式的日志可以避免MySQL主从复制中出现的主从不一致问题。在一个sql语句修改了1000条数据的情况下,基于段...

2225
来自专栏1分钟快速搭建MySQL主从数据库

1分钟快速搭建wwwhj8828com18088049999MySQL主从数据库

mysql-utilities工具集是一个集中了多种工具的合集,可以理解为是DBA的工具箱,本文介绍利用其中的mysqlreplicate工具来快速搭建MySQ...

3295
来自专栏iMySQL的专栏

MySQL FAQ 系列 — MySQL 复制中 slave 延迟监控

在MySQL复制环境中,我们通常只根据 Seconds_Behind_Master 的值来判断SLAVE的延迟。这么做大部分情况下尚可接受,但并不够准确,而应该...

3100
来自专栏一个会写诗的程序员的博客

Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOPXposed参考文档:

Xposed能够勾住(Hook) Android应用程序对象的方法,实现AOP,一个简单的例子:

1015
来自专栏Java成神之路

hbase_异常_03_java.io.EOFException: Premature EOF: no length prefix available

更改了hadoop的配置文件:core-site.xml  和   mapred-site.xml  之后,重启hadoop 和 hbase 之后,发现hbas...

2753
来自专栏腾讯IVWEB团队的专栏

使用 Xposed 强制 androidwebView 开启 debug 模式

从 《远程调试 Android 设备使用入门》文章中我们可以知道在 android 4.4+可以通过在apk中使用下面的代码开启 webview 的 chrom...

6610

扫码关注云+社区

领取腾讯云代金券