关于程序员:数据实时同步中的一种特殊场景说明及处理方法

42次阅读

共计 1160 个字符,预计需要花费 3 分钟才能阅读完成。

数据实时同步简要介绍:

数据同步或数据集成个别选用两类技术或工具,即:

1、ETL(Extract-Transform-Load)工具,它是将数据从源零碎加载到数据仓库的过程。用来形容将数据从起源端通过萃取(extract)、转置(transform)、加载(load)至目标端的过程。

2、CDC 工具,全称 Change Data Capture,变更数据捕获,从数据库外部捕获变更数据,将变更数据推送到推送到目标库中。CDC 机制速度极快,数据精准,且与应用程序耦合少,可形象脱离业务零碎。

实时同步场景中因对数据的实时性要求较高,所以个别选用 CDC 工具。

非凡场景阐明:

一般场景下,应用 CDC 工具解析源库日志信息,实时同步源库数据到目的地,如下图所示:

但在一些特定业务场景中,为尽量加重主数据库业务压力,个别设置一个备数据库,定期将主数据库中超过肯定期限的数据迁徙到备数据库中。备份时先将主数据库中超过肯定期限未更新的数据复制到备数据库中,再将主库中已复制的数据删除。如下图所示:

相似以上既有主库也有备库的状况,若要做数据的实时同步,则主库和备库都须要将数据实时同步到目的地,防止因为主库的备份动作导致目标端数据误删、反复等与源端产生不统一,如下图所示:

这种情景下,主库、备库的表名、字段名完全一致,目标库须要正确辨认同步数据来源于主库还是备库,并分类解决,保障目标库中数据与源端数据统一。以下介绍一种解决此类需要的形式。

主备库同时进行数据同步时的解决方案:

应用 CDC 工具进行数据同步时,为了便于目标端解决,须要在原始数据的根底上增加一些扩大字段,如原表名、操作类型、工夫戳等,如下图所示:

为了解决上述源库有主备的状况,可在以上扩大字段的根底上再减少一个扩大字段,如优先级字段,规定若源库为主数据库,优先级字段值为“100”,若源库为备数据库,优先级字段值为“200”,则目标端在解决来自源端同步过去的数据时,在原解决根底上减少以下解决逻辑:

  • 若同步过去的数据为“插入”操作,查看目标端中是否存在与待插入数据雷同的数据(注:比拟不带扩大字段的原始局部是否统一),若没有则失常插入,若有则比拟两条数据中“优先级”扩大字段,目标端保留“优先级”扩大字段更大的那一条数据;
  • 若同步过去的数据为“删除”操作,查看目标端中是否存在与待删除数据雷同的数据(注:比拟不带扩大字段的原始局部是否统一),若没有则不做任何操作,若有则比拟两条数据中“优先级”扩大字段:若两条数据中“优先级”扩大字段一样的话则删除目标端中数据,若同步过去的数据中“优先级”扩大字段值小于目标端中雷同数据的“优先级”扩大字段值则不做任何操作,若同步过去的数据中“优先级”扩大字段值大于目标端中雷同数据的“优先级”扩大字段值则删除目标端中数据;

    本文由华为云公布。
    本文由华为云公布

正文完
 0