免费试用

一、应用场景

某些业务有地域属性的区分,有跨地域灾备的需求;某些全国性业务或全球性业务,对本地服务响应时间要求较高,但由于跨地域的网络延迟的问题,集中部署的数据库无法满足服务对于性能的要求。应对以上场景可以采用两地分别部署数据库,两套数据库做双向复制的方案。

二、技术架构

部署拓扑

集群部署拓扑图

上图通过颜色区分了两个集群复制组件的部署情况,其中 pump 为 binlog 生成组件,drainer 为 binlog 消费组件。两个集群互为上下游。

技术实现

集群技术实现

在 A 和 B 两个集群间开启双向复制,则写入集群 A 的数据会复制到集群 B 中,然后这部分数据又会继续复制到集群 A,这样就会出现无限循环复制的情况。如上图所示,在复制数据的过程中 Drainer 对 binlog 加上标记,通过过滤掉有标记的 binlog 来避免循环复制。详细的实现流程如下:

  1. 为两个集群分别启动 TiDB Binlog 复制程序。
  2. 待复制的事务经过 A 的 Drainer 时,Drainer 为事务加入 _drainer_repl_mark 标识表,并在表中写入本次 DML event 更新,将事务复制至集群 B。
  3. 集群 B 向集群 A 返回带有 _drainer_repl_mark 标识表的 binlog event。集群 B 的 Drainer 在解析该 binlog event 时发现带有 DML event 的标识表,放弃复制 binlog event 到集群 A。

三、注意事项

(1)应用需要具备切分流量的功能,将不同区域的数据分发到对应的 TiDB 集群。只需有一个统一版本的应用服务。其整体架构如下:

统一整体架构

(2)为防止数据冲突,应使用主键或唯一索引进行流量切分;

(3)为避免写入冲突,应避免使用自增列,主键的生成策略需要增加带有地区属性的标识位;

(4)DDL 只能在其中一个 TiDB 集群中执行。

金融行业内容专区上线,为金融机构数据库选型和应用提供深入洞察和可靠参考路径。