MySQL 實例間的雙向同步
更新時間 2024-08-05 15:44:42
最近更新時間: 2024-08-05 15:44:42
分享文章
本文介紹了如何通過數據傳輸服務DTS在其他云數據庫與天翼云關系數據庫MySQL版間實現數據雙向同步。
前提條件
源庫要求
- 正向同步(源庫同步至目標庫)所需權限:
- 對MySQL庫的查詢權限。
- 對待遷移庫的查詢權限。
- 部分全局權限:RELOAD、LOCK TABLES、REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、PROCESS。
- 如果是整實例遷移,需要對所有數據庫的查詢權限。
- 反向同步(目標庫同步至源庫)所需權限為以下全局權限:
- ALTER、ALTER ROUTINE、CREATE、CREATE ROUTINE、CREATE TEMPORARY TABLES、CREATE USER、CREATE VIEW、DELETE、DROP、EVENT、EXECUTE、INDEX、INSERT、LOCK TABLES、PROCESS、REFERENCES、RELOAD、SELECT、SHOW DATABASES、SHOW VIEW、TRIGGER、UPDATE。
- 其他要求:
- 在磁盤空間允許的情況下,建議數據庫binlog保存時間越長越好,建議為3天。
- 數據庫的binlog日志必須打開,且binlog日志格式必須為Row格式。
- 數據庫expire_logs_days參數值為0,可能會導致同步失敗。
- 待同步的表需具備主鍵或唯一約束,且字段具有唯一性,否則可能會導致目標數據庫中出現重復數據。
- 必須設置MySQL數據庫的server-id。如果數據庫版本小于或等于MySQL5.6,server-id的取值范圍在2-4294967296之間;如果數據庫版本大于或等于MySQL5.7,server-id的取值范圍在1-4294967296之間。
- 數據庫GTID狀態建議為開啟狀態,數據庫實例沒有開啟GTID的情況下數據傳輸服務DTS不支持主備HA切換,因為數據傳輸服務DTS任務會因為位點不續接而中斷導致無法恢復。
- 數據庫必須有足夠的磁盤空間。
- 目標庫關聯RDS數據庫的字符集必須與源數據庫一致。
- 源庫和目標庫的大版本號需保持一致。
- 數據庫必須包含雙向同步標記庫表(用于解決雙向同步數據回環的問題),相關SQL請參考如下語句:
CREATE DATABASE IF NOT EXISTS retl;
CREATE TABLE retl.`retl_mark` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`CHANNEL_ID` int(11) DEFAULT NULL,
`CHANNEL_INFO` varchar(128) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3002 DEFAULT CHARSET=utf8;
目標庫要求
與源庫要求保持一致。
約束限制
- 雙向同步是在全量同步完成后才開始進行,全量同步完成之前,目標庫只能讀不能寫,否則會導致源庫與目標庫數據不一致。待全量同步完成后,目標庫可讀可寫。
- 為保障同步數據的一致性,您需要確保同一個主鍵或唯一鍵的記錄只在雙向同步的一個節點進行更新。如果同時更新則會按照您在數據同步作業中配置的主方向進行響應。
說明詳細信息請參考數據傳輸服務DTS文檔。
操作步驟
- 登錄管理控制臺。
- 單擊管理控制臺左上角的位置圖標,然后在下拉列表中選擇目標區域和項目。
- 選擇“數據庫 > 數據傳輸服務DTS”,進入數據傳輸服務DTS控制臺。
- 單擊左側菜單欄“數據同步”。
- 點擊“創建實例”按鈕創建數據傳輸服務DTS同步實例。
- 在“信息配置”欄,網絡接入類型選擇“公網EIP”,公網IP任意選擇一個可用的公網IP即可。
說明如果在天翼云已有可用的公網IP,則可以直接使用,否則需要先購買一個公網IP用于實現數據傳輸服務DTS實例的公網訪問。
- 在“信息配置”欄的“目標庫實例”中,選擇您需要同步的第一個數據庫類型與實例。
- 填寫完信息后點擊“下一步 > 立即創建”,開始創建數據傳輸服務DTS實例。
- 回到數據傳輸服務DTS控制臺,等待數據傳輸服務DTS實例創建成功后,找到對應實例,點擊“實例配置”。
- 填寫源庫的IP地址、端口號、數據庫賬號和密碼,填寫目標庫的數據庫賬號和密碼,點擊“檢測連通性并下一步”。
- 在“同步拓撲”處選擇“雙向同步”。
- 在“源庫對象”處選擇需要同步的第二個數據庫,點擊箭頭移動到“已選擇對象”。

- 單擊“下一步預檢查”,等待預檢查完成。
說明如果預檢查沒有通過,可根據提示進行修改,然后重新執行預檢查。
- 預檢查通過后,單擊“啟動同步”開始進行數據同步。
- 回到數據傳輸服務DTS控制臺,點擊實例可以查看同步狀態。