從PolarDB MySQL版同步至RDS MySQL
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細閱讀。
本文介紹如何使用數(shù)據(jù)傳輸服務(wù)DTS(Data Transmission Service),將PolarDB MySQL版同步至RDS MySQL,實現(xiàn)增量數(shù)據(jù)的實時同步。
前提條件
- 已購買PolarDB MySQL版集群,詳情請參見創(chuàng)建PolarDB MySQL集群。
- PolarDB MySQL版集群已開啟Binlog,詳情請參見如何開啟Binlog。
注意事項
DTS在執(zhí)行全量數(shù)據(jù)初始化時將占用源庫和目標庫一定的讀寫資源,可能會導(dǎo)致數(shù)據(jù)庫的負載上升,在數(shù)據(jù)庫性能較差、規(guī)格較低或業(yè)務(wù)量較大的情況下(例如源庫有大量慢SQL、存在無主鍵表或目標庫存在死鎖等),可能會加重數(shù)據(jù)庫壓力,甚至導(dǎo)致數(shù)據(jù)庫服務(wù)不可用。因此您需要在執(zhí)行數(shù)據(jù)同步前評估源庫和目標庫的性能,同時建議您在業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)同步(例如源庫和目標庫的CPU負載在30%以下)。
- 全量初始化過程中,并發(fā)INSERT會導(dǎo)致目標集群的表碎片,全量初始化完成后,目標集群的表空間比源庫的表空間大。
- 如果數(shù)據(jù)同步的源庫沒有主鍵或唯一約束,且記錄的全字段沒有唯一性,可能會出現(xiàn)重復(fù)數(shù)據(jù)。
- 目標庫為RDS MySQL或RDS MySQL Serverless實例時(除5.7和8.0版本外),DTS會在目標庫新建一個有寫入權(quán)限且僅供DTS內(nèi)部使用的數(shù)據(jù)同步賬號dtssyncwriter。
費用說明
同步類型 | 鏈路配置費用 |
庫表結(jié)構(gòu)同步和全量數(shù)據(jù)同步 | 不收費。 |
增量數(shù)據(jù)同步 | 收費,詳情請參見計費概述。 |
支持同步的SQL操作
操作類型 | SQL操作語句 |
DML | INSERT、UPDATE、DELETE、REPLACE |
DDL |
|
支持的同步架構(gòu)
一對一單向同步
一對多單向同步
級聯(lián)單向同步
多對一單向同步
關(guān)于各類同步架構(gòu)的介紹及注意事項,請參見數(shù)據(jù)同步拓撲介紹。
功能限制
不兼容觸發(fā)器
當同步對象為整個庫,且?guī)熘械挠|發(fā)器(TRIGGER)會更新庫內(nèi)某個表時,可能導(dǎo)致源和目標庫的數(shù)據(jù)不一致。相關(guān)解決方案請參見源庫存在觸發(fā)器時如何配置同步作業(yè)。
RENAME TABLE限制
RENAME TABLE操作可能導(dǎo)致同步數(shù)據(jù)不一致。例如同步對象只包含表A,如果同步過程中源實例將表A重命名為表B,那么表B將不會被同步到目標庫。為避免該問題,您可以在數(shù)據(jù)同步配置時,選擇同步表A和表B所在的整個數(shù)據(jù)庫作為同步對象。
操作步驟
- 購買數(shù)據(jù)同步作業(yè),詳情請參見購買流程。說明 購買時,選擇源實例為PolarDB,選擇目標實例為MySQL,并選擇同步拓撲為單向同步。
- 說明
若數(shù)據(jù)傳輸控制臺自動跳轉(zhuǎn)至數(shù)據(jù)管理DMS控制臺,您可以在右下角的中單擊,返回至舊版數(shù)據(jù)傳輸控制臺。
在左側(cè)導(dǎo)航欄,單擊數(shù)據(jù)同步。
在同步作業(yè)列表頁面頂部,選擇同步的目標實例所屬地域。
定位至已購買的數(shù)據(jù)同步實例,單擊配置同步鏈路。
- 配置同步通道的源實例及目標實例信息。
類別 配置 說明 無 同步作業(yè)名稱 DTS會自動生成一個同步作業(yè)名稱,建議配置具有業(yè)務(wù)意義的名稱(無唯一性要求),便于后續(xù)識別。 源實例信息 實例類型 固定為PolarDB實例,不可變更。 實例地區(qū) 購買數(shù)據(jù)同步實例時選擇的源實例地域信息,不可變更。 PolarDB實例ID 選擇源PolarDB MySQL版集群ID。 數(shù)據(jù)庫賬號 填入源PolarDB MySQL版集群的數(shù)據(jù)庫賬號。 數(shù)據(jù)庫密碼 填入數(shù)據(jù)庫賬號對應(yīng)的密碼。 目標實例信息 實例類型 選擇為RDS實例。 實例地區(qū) 購買數(shù)據(jù)同步實例時選擇的目標實例地域信息,不可變更。 數(shù)據(jù)庫賬號 填入目標RDS實例的數(shù)據(jù)庫賬號。 數(shù)據(jù)庫密碼 填入數(shù)據(jù)庫賬號對應(yīng)的密碼。 說明 當目標RDS實例的數(shù)據(jù)庫類型為MySQL 5.5或MySQL 5.6時,無需配置數(shù)據(jù)庫賬號和數(shù)據(jù)庫密碼。連接方式 根據(jù)需求選擇非加密連接或SSL安全連接。如果設(shè)置為SSL安全連接,您需要提前開啟RDS實例的SSL加密功能,詳情請參見設(shè)置SSL加密。 單擊頁面右下角的授權(quán)白名單并進入下一步。
如果源或目標數(shù)據(jù)庫是阿里云數(shù)據(jù)庫實例(例如RDS MySQL、云數(shù)據(jù)庫MongoDB版等),DTS會自動將對應(yīng)地區(qū)DTS服務(wù)的IP地址添加到阿里云數(shù)據(jù)庫實例的白名單中;如果源或目標數(shù)據(jù)庫是ECS上的自建數(shù)據(jù)庫,DTS會自動將對應(yīng)地區(qū)DTS服務(wù)的IP地址添到ECS的安全規(guī)則中,您還需確保自建數(shù)據(jù)庫沒有限制ECS的訪問(若數(shù)據(jù)庫是集群部署在多個ECS實例,您需要手動將DTS服務(wù)對應(yīng)地區(qū)的IP地址添到其余每個ECS的安全規(guī)則中);如果源或目標數(shù)據(jù)庫是IDC自建數(shù)據(jù)庫或其他云數(shù)據(jù)庫,則需要您手動添加對應(yīng)地區(qū)DTS服務(wù)的IP地址,以允許來自DTS服務(wù)器的訪問。DTS服務(wù)的IP地址,請參見DTS服務(wù)器的IP地址段。
警告DTS自動添加或您手動添加DTS服務(wù)的公網(wǎng)IP地址段可能會存在安全風(fēng)險,一旦使用本產(chǎn)品代表您已理解和確認其中可能存在的安全風(fēng)險,并且需要您做好基本的安全防護,包括但不限于加強賬號密碼強度防范、限制各網(wǎng)段開放的端口號、內(nèi)部各API使用鑒權(quán)方式通信、定期檢查并限制不需要的網(wǎng)段,或者使用通過內(nèi)網(wǎng)(專線/VPN網(wǎng)關(guān)/智能網(wǎng)關(guān))的方式接入。
配置目標已存在表的處理模式和同步對象。
配置項目
配置說明
目標已存在表的處理模式
預(yù)檢查并報錯攔截:檢查目標數(shù)據(jù)庫中是否有同名的表。如果目標數(shù)據(jù)庫中沒有同名的表,則通過該檢查項目;如果目標數(shù)據(jù)庫中有同名的表,則在預(yù)檢查階段提示錯誤,數(shù)據(jù)同步作業(yè)不會被啟動。
說明如果目標庫中同名的表不方便刪除或重命名,您可以設(shè)置同步對象在目標實例中的名稱來避免表名沖突。
忽略報錯并繼續(xù)執(zhí)行:跳過目標數(shù)據(jù)庫中是否有同名表的檢查項。
警告選擇為忽略報錯并繼續(xù)執(zhí)行,可能導(dǎo)致數(shù)據(jù)不一致,給業(yè)務(wù)帶來風(fēng)險,例如:
表結(jié)構(gòu)一致的情況下,如果在目標庫遇到與源庫主鍵的值相同的記錄,在初始化階段會保留目標庫中的該條記錄;在增量同步階段則會覆蓋目標庫的該條記錄。
表結(jié)構(gòu)不一致的情況下,可能會導(dǎo)致無法初始化數(shù)據(jù)、只能同步部分列的數(shù)據(jù)或同步失敗。
選擇同步對象
在源庫對象框中單擊待同步的對象,然后單擊圖標將其移動至已選擇對象框。
同步對象的選擇粒度為庫、表。
說明如果選擇整個庫作為同步對象,那么該庫中所有對象的結(jié)構(gòu)變更操作都會同步至目標庫。
默認情況下,同步對象的名稱保持不變。如果您需要改變同步對象在目標集群中的名稱,請使用對象名映射功能,詳情請參見設(shè)置同步對象在目標實例中的名稱。
映射名稱更改
如需更改同步對象在目標實例中的名稱,請使用對象名映射功能,詳情請參見庫表列映射。
源表DMS_ONLINE_DDL過程中是否復(fù)制臨時表到目標庫
如源庫使用數(shù)據(jù)管理DMS(Data Management)執(zhí)行Online DDL變更,您可以選擇是否同步Online DDL變更產(chǎn)生的臨時表數(shù)據(jù)。
是:同步Online DDL變更產(chǎn)生的臨時表數(shù)據(jù)。
說明Online DDL變更產(chǎn)生的臨時表數(shù)據(jù)過大,可能會導(dǎo)致同步任務(wù)延遲。
否:不同步Online DDL變更產(chǎn)生的臨時表數(shù)據(jù),只同步源庫的原始DDL數(shù)據(jù)。
說明該方案會導(dǎo)致目標庫鎖表。
源庫、目標庫無法連接后的重試時間
當源、目標庫無法連接時,DTS默認重試720分鐘(即12小時),您也可以自定義重試時間。如果DTS在設(shè)置的時間內(nèi)重新連接上源、目標庫,同步任務(wù)將自動恢復(fù)。否則,同步任務(wù)將失敗。
說明由于連接重試期間,DTS將收取任務(wù)運行費用,建議您根據(jù)業(yè)務(wù)需要自定義重試時間,或者在源和目標庫實例釋放后盡快釋放DTS實例。
上述配置完成后,單擊頁面右下角的下一步。
配置同步初始化的高級配置信息。
說明同步初始化類型細分為:結(jié)構(gòu)初始化,全量數(shù)據(jù)初始化。選中結(jié)構(gòu)初始化和全量數(shù)據(jù)初始化后,DTS會在增量數(shù)據(jù)同步之前,將源數(shù)據(jù)庫中待同步對象的結(jié)構(gòu)和存量數(shù)據(jù),同步到目標數(shù)據(jù)庫。
上述配置完成后,單擊頁面右下角的預(yù)檢查并啟動。
說明在同步作業(yè)正式啟動之前,會先進行預(yù)檢查。只有預(yù)檢查通過后,才能成功啟動同步作業(yè)。
如果預(yù)檢查失敗,單擊具體檢查項后的,查看失敗詳情。
您可以根據(jù)提示修復(fù)后重新進行預(yù)檢查。
如無需修復(fù)告警檢測項,您也可以選擇確認屏蔽、忽略告警項并重新進行預(yù)檢查,跳過告警檢測項重新進行預(yù)檢查。
在預(yù)檢查對話框中顯示預(yù)檢查通過后,關(guān)閉預(yù)檢查對話框,同步作業(yè)將正式開始。
等待同步作業(yè)的鏈路初始化完成,直至處于同步中狀態(tài)。
您可以在數(shù)據(jù)同步頁面,查看數(shù)據(jù)同步作業(yè)的狀態(tài)。