mysql 主备复制下的可靠性漫谈(三)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

引言:

   前面两期主要针对各种故障条件下,对数据可靠性带来的挑战及普通应对策略。本文主要针对在主备非强同步复制模式下,能否保证数据可靠性来讨论。

复制模式概述:

    异步模式:主库收到commit 请求后,依次执行:写redo log prepare,写入binlog,写redo log commit,返回客户端成功。

        半同步模式:主库收到commit 后,依次执行 redo log prepare,写binlog/发往备库(两个步骤并行),等待备库回复收到ack,redo log commit,给用户回复成功。这个有一个等待ack的超时,当超过设置的时长,那么自动降级为异步模式;当网络或备库恢复后,备库IO线程开始追赶主库,当追上后,复制模式会自动升级为半同步模式。

         强同步模式:主库收到commit 后,依次执行 redo log prepare,写binlog/发往备库(并行),等待备库fsync到磁盘后,redo log commit ,给用户恢复成功。

保证可靠性:

   异步模式下,由于主库写入事务时,不会传递到备库(无论物理复制还是逻辑复制),那么当主库down机时,备库数据和主库是很可能不一致的,所以此时是无法保证可靠性的。对于我们阿里云用户使用的mysql库,在此模式下就没任何办法了么?其实不是,在此模式下,我们提供了以下的措施来最大限度的保证主备一致性:

   1)备库一定是在应用完所有传递到备库的日志后,才开放可写。这样就最大限度保证备库的数据线是一致的,不会导致双写的问题(一边应用日志,一边接受写入)。

   2)主库增加时间戳,通过复制关系同步到备库,当主库故障时,HA系统(数据库高可用系统)通过比对最后一次成功写入主库的时间戳及备库上从主库接受到日志后应用掉后的时间戳进行比较,当大于某个阀值时,不做链路切换动作。这样能够保证主备间数据不一致的时间长度在可控范围内。

   3)判断主库故障的条件更加苛刻,当不是主库所在主机是不可恢复的故障时,优先使用主库重启的方式来解决,确保数据线的一致性。


   半同步模式下,当网络与主备库都正常情况下,主备库的数据一定是最终一致的(备库需要应用relay日志),当主库故障时,要么事务在主库还没有应用,没有传递日志到备库;要么事务在主库应用了,日志也传递到了备库。所以最终是一致的。


   那么是不是半同步下,数据就不丢了呢?我们前面说过,当网络,和备库出现间歇性问题时,那么半同步会降级为异步,那么如果恰恰在此时,备库的IO线程正在追赶主库的binlog位点,但是还没有完全同步上,主库down了(也就是说此时出现延迟的情况下),主备数据就会出现不一致。


   针对这个问题,我们研发了double binlog复制模式,该模式是在半同步基础上更进一步,在主备库间除了半同步复制通路,同时还有一个异步复制通路,平时在主备库及网络都健康情况下,由半同步通路持续的保持复制关系,确保主备数据一致;但是当在备库或主备间网络出现问题,一旦备库或网络恢复后,备库不再使用单一的链路来复制binlog,会同时开启两条复制链路,一条继续从上次备库最后一次接到的位点来复制,一条从主库写入的最新一条事务日志来复制,那么落后的复制不必追赶到最新的主库binlog位置才升级为半同步,而是追赶到备库恢复后的位点即可。这时两条复制通路的binlog就可以完整接上,然后等待备库继续掉日志后,主备数据就完全同步了。


总结:


   所以通过这个特性,我们能做到在主备出现延迟后,依然能够保证主备的一致性。目前金融专有云已经开始使用该复制模式,对数据要求性高的朋友依然可以使用mysql一主一备的低成本方式来满足企业的日常需求。










相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
Cloud Native 关系型数据库 MySQL
PolarDB MySQL企业版:云原生架构,超高性能与可靠性的完美结合
在数字化时代,数据已成为企业的核心资产。对于现代企业来说,选择一款高性能、高可靠性、高性价比的数据库至关重要。阿里巴巴自研的云原生HTAP数据库——PolarDB MySQL企业版,正是这样一款满足企业需求的理想选择。
115 1
|
2月前
|
SQL 容灾 关系型数据库
MySQL 主从复制原理
MySQL 主从复制原理
36 1
MySQL 主从复制原理
|
4月前
|
SQL 关系型数据库 MySQL
MySql主从复制原理及其搭建
MySql主从复制原理及其搭建
|
6月前
|
关系型数据库 MySQL 数据库
MySQL高可用与复制:确保稳定性与可靠性
本文深入研究了MySQL数据库中的高可用性与复制策略,通过详细的代码示例,介绍了复制的原理与架构,主从复制与读写分离的应用,以及高可用方案中的主备切换和故障转移。复制技术基于主从架构,使数据在多个数据库之间保持一致,提供了高可用性和数据冗余的保障。通过主从复制,数据库不仅能够实现高可用性,还可以通过读写分离来分担主数据库的负载,提升系统的性能。在高可用方案中,主备切换和故障转移是关键策略,可以在主数据库故障时快速切换到备库,确保系统的连续性。
110 0
|
6月前
|
关系型数据库 MySQL 数据库
MySQL数据备份与恢复:保障数据安全与可靠性
本文深入介绍了MySQL数据库中的数据备份与恢复策略,以及相关工具和解决方案。通过详细的代码示例,阐述了使用`mysqldump`工具进行全库备份和数据恢复的步骤。同时,强调了制定合理的备份策略的重要性,以及如何使用定时任务工具自动进行备份。在备份和恢复过程中可能遇到的常见问题,如速度慢和版本兼容性,也提供了相应的解决方案。通过深入了解这些技术,读者将能够在数据库管理中高效地进行数据备份与恢复,确保数据的安全性和可靠性,为应对各种意外情况提供了有力的保障。
113 0
|
6月前
|
SQL 负载均衡 关系型数据库
MySQL主从复制的原理与实操+mycat2读写分离
MySQL主从复制的原理与实操+mycat2读写分离
105 0
|
10月前
|
SQL 缓存 算法
【MySQL】主从复制(重点:主从复制原理)
本文重点介绍MySQL的主从复制概述,作用,原理,同步数据一致性问题。
107 0
|
10月前
|
SQL 关系型数据库 MySQL
面试官问:了解Mysql主从复制原理么?我呵呵一笑
搭建Mysql主从同步之前,我们先来说他们之间同步的过程与原理: 同步复制过程 献上一张图,这张图诠释了整个同步过程
|
SQL 关系型数据库 MySQL
什么是MySQL的复制表?
什么是MySQL的复制表?
|
SQL 关系型数据库 MySQL
什么是MySQL的复制表?
如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。 如果仅仅使用CREATE TABLE ... SELECT命令,是无法实现的。
什么是MySQL的复制表?

热门文章

最新文章