PolarDB是阿里巴巴自主研發的下一代關系型分布式云原生數據庫,可完全兼容MySQL,具備簡單易用、高性能、高可靠、高可用等優勢。通過數據傳輸服務DTS(Data Transmission Service),您可以實現PolarDB MySQL版集群間的單向數據同步。
前提條件
- 已購買源和目標PolarDB MySQL版集群,詳情請參見購買按量付費集群。支持的數據庫版本,請參見同步方案概覽。
- 源PolarDB MySQL版集群已開啟Binlog,詳情請參見如何開啟Binlog。
注意事項
- DTS在執行全量數據初始化時將占用源庫和目標庫一定的讀寫資源,可能會導致數據庫的負載上升,在數據庫性能較差、規格較低或業務量較大的情況下(例如源庫有大量慢SQL、存在無主鍵表或目標庫存在死鎖等),可能會加重數據庫壓力,甚至導致數據庫服務不可用。因此您需要在執行數據同步前評估源庫和目標庫的性能,同時建議您在業務低峰期執行數據同步(例如源庫和目標庫的CPU負載在30%以下)。
- 全量初始化過程中,并發INSERT會導致目標集群的表碎片,全量初始化完成后,目標集群的表空間比源庫的表空間大。
- 如果數據同步的源庫沒有主鍵或唯一約束,且記錄的全字段沒有唯一性,可能會出現重復數據。
- 建議源和目標PolarDB MySQL版集群的數據庫版本保持一致,或者從低版本同步到高版本以保障兼容性。
費用說明
同步類型 | 鏈路配置費用 |
---|---|
庫表結構同步和全量數據同步 | 不收費。 |
增量數據同步 | 收費,詳情請參見計費概述。 |
支持同步的SQL操作
操作類型 | SQL操作語句 |
---|---|
DML | INSERT、UPDATE、DELETE、REPLACE |
DDL |
|
支持的同步架構
- 一對一單向同步
- 一對多單向同步
- 級聯單向同步
- 多對一單向同步
關于各類同步架構的介紹及注意事項,請參見數據同步拓撲介紹。
功能限制
- 不兼容觸發器
當同步對象為整個庫,且庫中的觸發器(TRIGGER)會更新庫內某個表時,可能導致源和目標庫的數據不一致。相關解決方案請參見源庫存在觸發器時如何配置同步作業。
- RENAME TABLE限制
RENAME TABLE操作可能導致同步數據不一致。例如同步對象只包含某個表,如果同步過程中源實例對該表執行了重命名操作,那么該表的數據將不會同步到目標庫。為避免該問題,您可以在數據同步配置時將該表所屬的整個數據庫作為同步對象。
操作步驟
- 購買數據同步作業,詳情請參見購買流程。說明 購買時,選擇源實例和目標實例均為PolarDB,并選擇同步拓撲為單向同步。
- 登錄數據傳輸控制臺。說明 若數據傳輸控制臺自動跳轉至數據管理DMS控制臺,您可以在右下角的中單擊,返回至舊版數據傳輸控制臺。
- 在左側導航欄,單擊數據同步。
- 在同步作業列表頁面頂部,選擇同步的目標實例所屬地域。
- 定位至已購買的數據同步實例,單擊配置同步鏈路。
- 配置同步通道的源實例及目標實例信息。
類別 配置 說明 無 同步作業名稱 DTS會自動生成一個同步作業名稱,建議配置具有業務意義的名稱(無唯一性要求),便于后續識別。 源實例信息 實例類型 固定為PolarDB實例,不可變更。 實例地區 購買數據同步實例時選擇的源實例地域信息,不可變更。 PolarDB實例ID 選擇源PolarDB MySQL版集群ID。 數據庫賬號 填入連接PolarDB MySQL版集群的數據庫賬號。 說明 該賬號需具備REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步對象的SELECT權限。數據庫密碼 填入數據庫賬號對應的密碼。 目標實例信息 實例類型 固定為PolarDB,不可變更。 實例地區 購買數據同步實例時選擇的目標實例地域信息,不可變更。 PolarDB實例ID 選擇目標PolarDB MySQL版集群ID。 數據庫賬號 填入連接PolarDB MySQL版集群的數據庫賬號。 說明 用于數據同步的數據庫賬號需具備目標同步對象的ALL權限。數據庫密碼 填入數據庫賬號對應的密碼。 - 單擊頁面右下角的授權白名單并進入下一步。說明
- 如果源或目標數據庫是阿里云數據庫實例(例如RDS MySQL、云數據庫MongoDB版等)或ECS上的自建數據庫,DTS會自動將對應地區DTS服務的IP地址添加到阿里云數據庫實例的白名單或ECS的安全規則中,您無需手動添加,請參見DTS服務器的IP地址段。
- DTS任務完成或釋放后,建議您手動刪除添加的DTS服務器IP地址段。
- 配置目標已存在表的處理模式和同步對象。
配置項目 配置說明 目標已存在表的處理模式 - 預檢查并報錯攔截:檢查目標數據庫中是否有同名的表。如果目標數據庫中沒有同名的表,則通過該檢查項目;如果目標數據庫中有同名的表,則在預檢查階段提示錯誤,數據同步作業不會被啟動。 說明 如果目標庫中同名的表不方便刪除或重命名,您可以設置同步對象在目標實例中的名稱來避免表名沖突。
- 忽略報錯并繼續執行:跳過目標數據庫中是否有同名表的檢查項。 警告 選擇為忽略報錯并繼續執行,可能導致數據不一致,給業務帶來風險,例如:
- 表結構一致的情況下,如果在目標庫遇到與源庫主鍵的值相同的記錄,在初始化階段會保留目標庫中的該條記錄;在增量同步階段則會覆蓋目標庫的該條記錄。
- 表結構不一致的情況下,可能會導致無法初始化數據、只能同步部分列的數據或同步失敗。
選擇同步對象 在源庫對象框中單擊待同步的對象,然后單擊圖標將其移動至已選擇對象框。
同步對象的選擇粒度為庫、表。
說明- 如果選擇整個庫作為同步對象,那么該庫中所有對象的結構變更操作都會同步至目標庫。
- 默認情況下,同步對象的名稱保持不變。如果您需要改變同步對象在目標集群中的名稱,請使用對象名映射功能,詳情請參見設置同步對象在目標實例中的名稱。
映射名稱更改 如需更改同步對象在目標實例中的名稱,請使用對象名映射功能,詳情請參見庫表列映射。
源表DMS_ONLINE_DDL過程中是否復制臨時表到目標庫 如源庫使用數據管理DMS(Data Management Service)執行Online DDL變更,您可以選擇是否同步Online DDL變更產生的臨時表數據。- 是:同步Online DDL變更產生的臨時表數據。說明 Online DDL變更產生的臨時表數據過大,可能會導致同步任務延遲。
- 否:不同步Online DDL變更產生的臨時表數據,只同步源庫的原始DDL數據。說明 該方案會導致目標庫鎖表。
源、目標庫無法連接重試時間 當源、目標庫無法連接時,DTS默認重試720分鐘(即12小時),您也可以自定義重試時間。如果DTS在設置的時間內重新連接上源、目標庫,同步任務將自動恢復。否則,同步任務將失敗。說明 由于連接重試期間,DTS將收取任務運行費用,建議您根據業務需要自定義重試時間,或者在源和目標庫實例釋放后盡快釋放DTS實例。 - 預檢查并報錯攔截:檢查目標數據庫中是否有同名的表。如果目標數據庫中沒有同名的表,則通過該檢查項目;如果目標數據庫中有同名的表,則在預檢查階段提示錯誤,數據同步作業不會被啟動。
- 上述配置完成后,單擊頁面右下角的下一步。
- 配置同步初始化的高級配置信息。說明 同步初始化類型細分為:結構初始化,全量數據初始化。選中結構初始化和全量數據初始化后,DTS會在增量數據同步之前,將源數據庫中待同步對象的結構和存量數據,同步到目標數據庫。
- 上述配置完成后,單擊頁面右下角的預檢查并啟動。說明
- 在同步作業正式啟動之前,會先進行預檢查。只有預檢查通過后,才能成功啟動同步作業。
- 如果預檢查失敗,單擊具體檢查項后的,查看失敗詳情。
- 您可以根據提示修復后重新進行預檢查。
- 如無需修復告警檢測項,您也可以選擇確認屏蔽、忽略告警項并重新進行預檢查,跳過告警檢測項重新進行預檢查。
- 在預檢查對話框中顯示預檢查通過后,關閉預檢查對話框,同步作業將正式開始。
- 等待同步作業的鏈路初始化完成,直至處于同步中狀態。您可以在數據同步頁面,查看數據同步作業的狀態。