1. 程式人生 > 其它 >資料實時同步中的一種特殊場景說明及處理方法

資料實時同步中的一種特殊場景說明及處理方法

資料實時同步簡要介紹:

資料同步或資料整合一般選用兩類技術或工具,即:

1、ETL(Extract-Transform-Load)工具,它是將資料從源系統載入到資料倉庫的過程。用來描述將資料從來源端經過萃取(extract)、轉置(transform)、載入(load)至目的端的過程。

2、CDC工具,全稱Change Data Capture,變更資料捕捉,從資料庫內部捕捉變更資料,將變更資料推送到推送到目的庫中。CDC機制速度極快,資料精準,且與應用程式耦合少,可抽象脫離業務系統。

實時同步場景中因對資料的實時性要求較高,所以一般選用CDC工具。

特殊場景說明:

普通場景下,使用CDC工具解析源庫日誌資訊,實時同步源庫資料到目的地,如下圖所示:

但在一些特定業務場景中,為儘量減輕主資料庫業務壓力,一般設定一個備資料庫,定期將主資料庫中超過一定期限的資料遷移到備資料庫中。備份時先將主資料庫中超過一定期限未更新的資料複製到備資料庫中,再將主庫中已複製的資料刪除。如下圖所示:

類似以上既有主庫也有備庫的情況,若要做資料的實時同步,則主庫和備庫都需要將資料實時同步到目的地,避免因為主庫的備份動作導致目的端資料誤刪、重複等與源端產生不一致,如下圖所示:

這種情景下,主庫、備庫的表名、欄位名完全一致,目的庫需要正確識別同步資料來源於主庫還是備庫,並分類處理,保證目的庫中資料與源端資料一致。以下介紹一種解決此類需求的方式。

主備庫同時進行資料同步時的解決方案:

使用CDC工具進行資料同步時,為了便於目的端處理,需要在原始資料的基礎上新增一些擴充套件欄位,如原表名、操作型別、時間戳等,如下圖所示:

為了解決上述源庫有主備的情況,可在以上擴充套件欄位的基礎上再增加一個擴充套件欄位,如優先順序欄位,規定若源庫為主資料庫,優先順序欄位值為“100”,若源庫為備資料庫,優先順序欄位值為“200”,則目的端在處理來自源端同步過來的資料時,在原處理基礎上增加以下處理邏輯:

  • 若同步過來的資料為“插入”操作,檢查目的端中是否存在與待插入資料相同的資料(注:比較不帶擴充套件欄位的原始部分是否一致),若沒有則正常插入,若有則比較兩條資料中“優先順序”擴充套件欄位,目的端儲存“優先順序”擴充套件欄位更大的那一條資料;
  • 若同步過來的資料為“刪除”操作,檢查目的端中是否存在與待刪除資料相同的資料(注:比較不帶擴充套件欄位的原始部分是否一致),若沒有則不做任何操作,若有則比較兩條資料中“優先順序”擴充套件欄位:若兩條資料中“優先順序”擴充套件欄位一樣的話則刪除目的端中資料,若同步過來的資料中“優先順序”擴充套件欄位值小於目的端中相同資料的“優先順序”擴充套件欄位值則不做任何操作,若同步過來的資料中“優先順序”擴充套件欄位值大於目的端中相同資料的“優先順序”擴充套件欄位值則刪除目的端中資料;

本文由華為雲釋出。
本文由華為雲釋出。