前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tdsql DCN同步技术原理介绍

Tdsql DCN同步技术原理介绍

原创
作者头像
腾讯云数据库 TencentDB
发布2020-10-22 17:51:00
3.9K0
发布2020-10-22 17:51:00
举报
文章被收录于专栏:腾讯云数据库(TencentDB)

概述:

利用主从复制+GTID的特性实现异地数据同步与读写分离。下面是实现细节与不同于常规方案的特性。

实现背景

是为了将分属两个不同集群的实例,建立同步关系。备实例会自动选择主实例中延迟较小的备机建立同步,当该主实例备机发生故障时,会自动与另一个备机建立同步关系。DCN同步建立后,主实例可写,备实例只读。这可作为一种异地容灾方案,也可作为一种异地读写方案,参照图1

图1

DCN技术分为两步:

第一部分:

在主备机房中,如图2

在主机房一主两备中,master提交事务后,写入binlog,通过mysql主从复制协议,master机将binlog传输到任意slave机,然后slave机回放relaylog,最终完成主从复制。第二部分:如图1,主备机房完成建立DCN同步后,备机房的master机会从主机房中主备延迟最小的slave机上的拉取binlog,随后回放binlog。

图2

第二部分:

如果主机房当前已经建立DCN同步的slave机器故障了,会自动与另一个备机建立同步关系如图2

主从同步的方式实现异地容灾方案比较成熟,但仍需要解决一些核心问题。

1. 由于存在“级联复制”的情况,那么如何准备的计算延迟?

2. 如果实例需要进行扩容时,同步关系是否收到影响,作为异地读写分离的场景,级联节点数据延迟扩大如何解决?

针对上述问题:

1. 计算延迟

a) 不采用Seconds_Behind_Master的值作为延迟依据,主机agent不停地向主机数据库写入带有当前时间戳的记录,这些记录会同步到备机数据库中备机的agent根据数据库中最新的记录与机器当前时间戳,就可以计算出实时延迟时间了,然后备机agent再将这些信息(包括实时延迟与延迟的主机信息)写入到zk中,告知其它模块,而这些信也息作为scheduler仲裁扩容的依据。

b) 如下图延迟的计算过程,在扩容的同步数据步骤中M每写入一条时间戳记录,目标实例中的所有节点都会同步到该条记录,然后上报到zk中,当scheduler发现所有节点的延迟小于5秒,且delayip都是M(这点主要是防止异常)时,进入到下一个流程

2.实例进行扩容的时候,集群具备自动更新dcn同步关系的功能,并且在扩容过程中不需要人为介入,减少了延迟得影响。由程序介入,并分拆为三步:

a) 建立原实例与目标实例的同步关系

b) 检测目标实例与原实例之间的延迟,当延迟小于5S时,设置原实例只读,拒绝掉新的写入

c) 检测目标实例与原实例之间的gtid,当gtid无差别时,断开原实例与目标实例之间的同步关系,并将Proxy路由切换到目标实例

d) 下图表示利用DCN进行集群扩容的流程:

i. MM表示主实例的主机,MS表示主实例备机,MSET表示主实例。SM表示备实例主机,SS表示备实例备机,SSET表示备实例。EMM表示主实例扩容的目标实例的主机,EMS表示主实例扩容的目标实例的备机,EMSET表示主实例扩容的目标实例。ESM表示备实例扩容的目标机器的主机,ESS表示备实例扩容的目标机器的备机,ESSET表示备实例扩容的目标实例

扩容流程:

(1)建立EMSET与MSET之间的扩容同步关系。

(2)检测到EMSET与MSET之间的延迟小于5秒时,断开SSET与MSET之间的DCN同步关系。(提前断开是为了防止后续SSET的GTID的信息不被EMSET的GTID列表包含,这里的差异信息可能是MM节点与EMSET断开后新写入ZK的时间戳记录)

(3)确认SSET与MSET之间的DCN同步关系断开后,设置MSET为隔离状态(此时网关会拒绝掉所有新的连接),并向EMM节点的agent发送扩容处理任务。

(4)当EMM节点的agent接收到scheduler发送的扩容处理后,设置MM节点只读,并计算EMM与MM节点gtid的差值,当gtid无差值时,反馈scheduler任务处理成功。如果期间设置只读失败,反馈sheduler处理失败。

(5)Scheduler根据agent反馈进行区分处理,反馈成功进入步骤6,反馈失败进入步骤7。

(6)断开EMSET与MSET之间的扩容同步关系,返回扩容成功,并建立EMSET与SSET之间的DCN同步关系。

(7)把MSET设置为正常状态(网关正常接收新连接),返回扩容失败,并重建MSET与SSET之间的DCN关系。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述:
  • DCN技术分为两步:
    • 第一部分:
      • 第二部分:
      相关产品与服务
      TDSQL-C MySQL 版
      TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,100%兼容 MySQL,为用户提供极致弹性、高性能、高可用、高可靠、安全的数据库服务。实现超百万 QPS 的高吞吐、PB 级海量分布式智能存储、Serverless 秒级伸缩,助力企业加速完成数字化转型。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档