MySQL级联复制中的数据同步(第二篇)

简介: 今天解决了两个蛮有意思的MySQL问题,简单分享出来。 首先是昨天说的级联复制的情况,因为架构做了调整,我们要删除其中的一个中继节点(新加坡节点),而直接使用北京节点去连接北美的节点。

今天解决了两个蛮有意思的MySQL问题,简单分享出来。

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

更多的信息可以参考。

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这个很不错的特性更加渴望。手工来分析判断,真是很让人费神。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
288 0
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
367 1
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
1824 4
|
关系型数据库 MySQL 数据库
【MySQL】手把手教你MySQL数据同步
【MySQL】手把手教你MySQL数据同步
|
10月前
|
关系型数据库 MySQL 数据库
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
随着数据量增长和业务扩展,单个数据库难以满足需求,需调整为集群模式以实现负载均衡和读写分离。MySQL主从复制是常见的高可用架构,通过binlog日志同步数据,确保主从数据一致性。本文详细介绍MySQL主从复制原理及配置步骤,包括一主二从集群的搭建过程,帮助读者实现稳定可靠的数据库高可用架构。
586 9
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
|
10月前
|
SQL 存储 关系型数据库
MySQL主从复制 —— 作用、原理、数据一致性,异步复制、半同步复制、组复制
MySQL主从复制 作用、原理—主库线程、I/O线程、SQL线程;主从同步要求,主从延迟原因及解决方案;数据一致性,异步复制、半同步复制、组复制
1121 11
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
1471 1
MySQL主从复制原理和使用
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
425 0
Mysql中搭建主从复制原理和配置
|
消息中间件 NoSQL 关系型数据库
一文彻底搞定Redis与MySQL的数据同步
【10月更文挑战第21天】本文介绍了 Redis 与 MySQL 数据同步的原因及实现方式。同步的主要目的是为了优化性能和保持数据一致性。实现方式包括基于数据库触发器、应用层双写和使用消息队列。每种方式都有其优缺点,需根据具体场景选择合适的方法。此外,文章还强调了数据同步时需要注意的数据一致性、性能优化和异常处理等问题。
2789 0
|
SQL 关系型数据库 MySQL
说一下MySQL主从复制的原理?
【8月更文挑战第24天】说一下MySQL主从复制的原理?
174 0

推荐镜像

更多