實時同步
更新時間 2024-02-22 11:03:15
最近更新時間: 2024-02-22 11:03:15
分享文章
本文主要介紹實時同步
本章介紹實時同步功能。實時同步是指在不同的系統之間,將數據通過同步技術從一個數據源拷貝到其他數據庫,并保持一致,實現關鍵業務的數據實時流動。實時同步不同于遷移,遷移是以整體數據庫搬遷為目的,而實時同步是維持不同業務之間的數據持續性流動。
支持的數據庫類型
數據復制服務支持多種數據庫類型的實時同步,且支持多個源數據庫到同一個目標數據庫之間的實時同步。
數據庫類型
| 同步方向 | 數據流向 | 源數據庫 | 目標數據庫 | 目標庫實例類型 |
|---|---|---|---|---|
| 入云 | MySQL->MySQL | 本地自建數據庫 ECS自建數據庫 其他云上數據庫 RDS for MySQL |
RDS for MySQL | 單機實例 主備實例 |
| 入云 | MySQL->DWS | 本地自建數據庫 ECS自建數據庫 其他云上數據庫 RDS for MySQL |
DWS集群 | 集群 |
| 入云 | MySQL->GaussDB(for MySQL) | 本地自建數據庫 ECS自建數據庫 其他云上數據庫 RDS for MySQL |
GaussDB(for MySQL) | 主備實例 |
| 入云 | PostgreSQL->PostgreSQL | 本地自建數據庫 ECS自建數據庫 其他云上數據庫 RDS for PostgreSQL |
RDS for PostgreSQL | 單機實例 主備實例 |
| 入云 | Oracle->DWS | 本地自建數據庫 ECS自建數據庫 |
DWS集群 | 集群 |
| 入云 | Oracle->PostgreSQL | 本地自建數據庫 ECS自建數據庫 |
RDS for PostgreSQL | 單機實例 主備實例 |
| 入云 | Oracle->MySQL | 本地自建數據庫 ECS自建數據庫 |
RDS for MySQL | 單機實例 主備實例 |
| 入云 | Oracle->GaussDB(for MySQL) | 本地自建數據庫 ECS自建數據庫 |
GaussDB(for MySQL) | 主備實例 |
| 入云 | Oracle->DRDS | 本地自建數據庫 ECS自建數據庫 |
DRDS | - |
| 入云 | DRDS->MySQL | DRDS | RDS for MySQL | 單機實例 主備實例 |
| 入云 | DRDS->DRDS | DRDS | DRDS | 集群 |
| 出云 | MySQL->MySQL | RDS for MySQL | 本地自建數據庫 ECS自建數據庫 其他云上數據庫 RDS for MySQL |
- |
| 出云 | DRDS->MySQL | DRDS | 本地自建數據庫 ECS自建數據庫 |
單機實例 主備實例 |
| 自建-自建 | Oracle->Kafka | 本地自建數據庫 ECS自建數據庫 |
Kafka | 集群 單機 |
| 自建-自建 | MySQL->Kafka | 本地自建數據庫 ECS自建數據庫 |
Kafka | 集群 單機 |
支持的同步方式
數據復制服務的同步方式分為全量、增量、全量+增量三種。
全量模式:數據庫一次性同步,適用于可中斷業務的數據庫同步場景,全量同步將非系統數據庫的全部數據庫對象和數據一次性同步至目標端數據庫。
增量模式:通過解析日志等技術,將源端產生的增量數據實時同步至目標端。
全量+增量模式:數據持續性實時同步,通過全量過程完成目標端數據庫的初始化后,增量同步階段通過解析日志等技術,將源端和目標端數據保持數據持續一致。
同步方式
| 同步方向 | 數據流向 | 增量同步 | 全量同步 | 全量+增量同步 | 單向/雙向同步 |
|---|---|---|---|---|---|
| 入云 | MySQL->MySQL | 支持 | 不支持 | 支持 | 支持單向同步 |
| 入云 | MySQL->GaussDB(for MySQL) | 支持 | 不支持 | 支持 | 支持單向同步 |
| 入云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 支持 | 支持單向同步 |
| 入云 | DRDS->MySQL | 不支持 | 不支持 | 支持 | 支持單向同步 |
| 入云 | DRDS->DRDS | 不支持 | 不支持 | 支持 | 支持單向同步 |
| 入云 | MySQL->DWS | 支持 | 支持 | 支持 | 支持單向同步 |
| 入云 | Oracle->DWS | 不支持 | 支持 | 支持 | 支持單向同步 |
| 入云 | Oracle->PostgreSQL | 不支持 | 支持 | 支持 | 支持單向同步 |
| 入云 | Oracle->MySQL | 不支持 | 支持 | 支持 | 支持單向同步 |
| 入云 | Oracle->GaussDB(for MySQL) | 不支持 | 支持 | 支持 | 支持單向同步 |
| 入云 | Oracle->DRDS | 不支持 | 支持 | 支持 | 支持單向同步 |
| 出云 | MySQL->MySQL | 支持 | 不支持 | 支持 | 支持單向同步 |
| 出云 | DRDS->MySQL | 不支持 | 不支持 | 支持 | 支持單向同步 |
| 自建-自建 | Oracle->Kafka | 支持 | 不支持 | 不支持 | 支持單向同步 |
| 自建-自建 | MySQL->Kafka | 支持 | 不支持 | 支持 | 支持單向同步 |
支持的數據庫版本
說明
不支持從高版本同步到低版本。
數據庫版本信息
| 同步方向 | 數據流向 | 源數據庫版本 | 目標數據庫版本 |
|---|---|---|---|
| 入云 | MySQL->MySQL | MySQL 5.5.x MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
| 入云 | MySQL->DWS | MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
以現網版本為準 |
| 入云 | MySQL->GaussDB(for MySQL) | MySQL 5.5.x MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
GaussDB(for MySQL)-MySQL 8.0 |
| 入云 | PostgreSQL->PostgreSQL | PostgreSQL 9.4.x PostgreSQL 9.5.x PostgreSQL 9.6.x PostgreSQL 10.x PostgreSQL 11.x PostgreSQL 12.x PostgreSQL 13.x PostgreSQL 14.x |
PostgreSQL 9.5.x PostgreSQL 9.6.x PostgreSQL 10.x PostgreSQL 11.x PostgreSQL 12.x PostgreSQL 13.x PostgreSQL 14.x |
| 入云 | DRDS->MySQL | 以現網版本為準 | MySQL 5.6.x MySQL 5.7.x |
| 入云 | DRDS->DRDS | 以現網版本為準 | 以現網版本為準 |
| 入云 | Oracle->DWS | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
以現網版本為準 |
| 入云 | Oracle->PostgreSQL | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
PostgreSQL 9.5.x PostgreSQL 9.6.x PostgreSQL 10.x PostgreSQL 11.x PostgreSQL 12.x |
| 入云 | Oracle-> MySQL | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
| 入云 | Oracle->GaussDB(for MySQL) | Oracle 10g Oracle 11g Oracle 12c Oracle 18c Oracle 19c |
GaussDB(for MySQL)-MySQL 8.0 |
| 入云 | Oracle->DRDS | Oracle 10g Oracle 11g Oracle 12c Oracle 18c Oracle 19c |
以現網版本為準 |
| 出云 | MySQL->MySQL | MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
| 出云 | DRDS->MySQL | 以現網版本為準 | MySQL 5.6.x MySQL 5.7.x |
| 自建-自建 | Oracle->Kafka | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
Kafka 0.11及以上版本 |
| 自建-自建 | MySQL->Kafka | MySQL 5.5.x MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
Kafka 0.11及以上版本 |
支持的網絡方式
數據復制服務提供的實時同步功能支持通過多種網絡方式進行實時同步,包括:VPC網絡、VPN網絡、專線網絡和公網網絡,在正式進行實時同步之前請參考下表了解網絡類型的使用場景及準備工作。
網絡類型
| 網絡類型 | 使用場景 | 準備工作 |
|---|---|---|
| VPC網絡 | 適合云上同區域數據庫之間的同步。 | 源數據庫所在的區域要和目標數據庫實例所在的區域保持一致。 源數據庫可以和目標數據庫在同一VPC內,也可以在不同VPC內。 當源數據庫和目標數據庫處于同一個VPC內的時候,默認網絡是連通的,不需要單獨設置安全組。 當源數據庫和目標數據庫不在同一個VPC內的時候,要求源數據庫和目標數據庫所處的子網處于不同網段,不能重復或交叉, 此時需要通過對等連接實現網絡互通。針對這種情況,DRS會在測試連接時自動按照單IP最小范圍打通建立路由。 |
| VPN網絡 | 適合通過VPN網絡,實現其他云下自建數據庫與云上數據庫之間的實時同步、或云上跨Region的數據庫之間的實時同步。 | 用戶需要確保本地數據中心和目標數據庫所在VPC的VPN網絡建立連接,確保VPN網絡可正常訪問的前提下,再進行數據同步。 |
| 專線網絡 | 適合通過專線網絡,實現其他云下自建數據庫與云上數據庫之間的實時同步、或云上跨Region的數據庫之間的實時同步。 | 用戶需要通過專線網絡建立云與數據中心的專線連接。 |
| 公網網絡 | 適合通過公網網絡把其他云下或其他平臺的數據庫同步到目標數據庫 | 為了確保源數據庫和目標數據庫之間的網絡互通,源數據庫端和目標數據庫端分別需要進行如下設置: 1.開啟公網訪問 源數據庫端實例需要根據具體的場景,由用戶端開啟公網訪問。 2.設置安全組規則 源數據庫需要將DRS同步實例的彈性IP添加到其網絡入口白名單內,使源數據庫與DRS同步實例可以連通。 由于目標數據庫和DRS同步實例處于同一個VPC內,默認網絡是連通的,不需要單獨設置安全組。 說明 DRS同步實例創建成功后,可在“源庫及目標庫”頁面獲取DRS同步實例的彈性公網IP。 在選擇公網網絡進行同步時,如果沒有開啟SSL安全連接加密同步鏈路的功能,請確保待同步的數據為非機密數據,再進行數據同步。 |
支持的網絡類型
| 同步方向 | 數據流向 | VPC網絡 | 公網網絡 | VPN、專線網絡 |
|---|---|---|---|---|
| 入云 | MySQL->MySQL | 支持 | 支持 | 支持 |
| 入云 | MySQL->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
| 入云 | MySQL->DWS | 支持 | 支持 | 支持 |
| 入云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 支持 |
| 入云 | DRDS->MySQL | 支持 | 支持 | 支持 |
| 入云 | DRDS->DRDS | 支持 | 支持 | 支持 |
| 入云 | Oracle->MySQL | 支持 | 支持 | 支持 |
| 入云 | Oracle->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
| 入云 | Oracle->DRDS | 支持 | 支持 | 支持 |
| 入云 | Oracle->DWS | 支持 | 支持 | 支持 |
| 入云 | Oracle->PostgreSQL | 支持 | 支持 | 支持 |
| 出云 | MySQL->MySQL | 支持 | 支持 | 支持 |
| 出云 | DRDS->MySQL | 支持 | 支持 | 支持 |
| 自建-自建 | Oracle->Kafka | 支持 | 支持 | 支持 |
| 自建-自建 | MySQL->Kafka | 支持 | 支持 | 支持 |
支持的同步對象
數據復制服務提供的實時同步任務支持不同對象的選擇,支持情況如下表。
支持的同步對象
| 同步方向 | 數據流向 | 表級同步 | 庫級同步 | 導入對象文件 |
|---|---|---|---|---|
| 入云 | MySQL->MySQL | 支持 | 支持 | 支持 |
| 入云 | MySQL->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
| 入云 | MySQL->DWS | 支持 | 支持 | 支持 |
| 入云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 支持 |
| 入云 | DRDS->MySQL | 支持 | 暫不支持 | 暫不支持 |
| 入云 | DRDS->DRDS | 支持 | 支持 | 暫不支持 |
| 入云 | Oracle->MySQL | 支持 | 支持 | 支持 |
| 入云 | Oracle->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
| 入云 | Oracle->DRDS | 支持 | 暫不支持 | 暫不支持 |
| 入云 | Oracle->DWS | 支持 | 暫不支持 | 支持 |
| 入云 | Oracle->PostgreSQL | 支持 | 暫不支持 | 支持 |
| 出云 | MySQL->MySQL | 支持 | 支持 | 暫不支持 |
| 出云 | DRDS->MySQL | 支持 | 暫不支持 | 暫不支持 |
| 自建-自建 | Oracle->Kafka | 支持 | 暫不支持 | 支持 |
| 自建-自建 | MySQL->Kafka | 支持 | 支持 | 支持 |
支持的高級特性
數據復制服務提供的實時同步任務支持多種特性,有效的幫助您提高實時同步的成功率。
高級特性列表
| 特性 | 說明 |
|---|---|
| 同步級別 | 數據復制服務提供的實時同步功能支持庫級同步和表級同步。 庫級同步是以庫為單位的同步,不可單獨選擇表,且庫中新增表會自動加入同步關系之中。 表級同步是以表為單位的同步,不可以單獨選擇庫,新增表需要再次編輯同步任務,將新的表追加到同步關系中。 |
| 對象名映射 | 實時同步功能可以支持源數據庫和目標數據庫中的同步對象(包括數據庫、schema、表或列)的名稱不同。 如果同步的數據庫對象在源數據庫和目標數據庫中的命名不同,那么可以使用數據復制服務提供的對象名映射功能進行映射。 目前數據復制服務提供的映射功能支持庫映射、schema映射和表映射。 |
| 動態增減同步對象 | 在實時同步過程中,您可以通過編輯同步對象隨時增加或減少需要同步的對象。 |
| 沖突處理 | 數據復制服務提供的實時同步功能使用了主鍵或唯一鍵沖突策略,這些策略可以由您自主選擇,盡可能保證源數據庫中有主鍵約束或唯一鍵約束的表同步到目標數據庫是符合預期的。 目前支持的沖突策略有: 忽略 當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),以目標數據為準,DRS將跳過沖突數據,繼續進行后續同步。 覆蓋 當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),以源數據為準,DRS將覆蓋原來的沖突數據。 報錯 當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),同步任務將失敗并立即中止。忽略和覆蓋,都是以同步穩定性優先(不會因為數據沖突而中斷任務),如果用戶以同步穩定性為關鍵,則在這里二選一。 報錯則是以數據質量為優先,即用戶環境不應該出現任何數據沖突,無論是忽略還是覆蓋都可能產生嚴重業務問題,所以DRS同步任務立即失敗,并人為排查原因。但需注意,如果任務長期處于失敗狀態,可能會導致存儲占滿而無法修復任務。 |
| 數據結構同步能力 | 數據復制服務提供的實時同步功能不支持單獨的數據結構同步,而是提供特殊的數據結構同步機制,在同步任務啟動后,將數據和結構一并同步到目標數據庫。 |