RDS MySQL實例間的單向同步
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細閱讀。
數(shù)據(jù)傳輸服務(wù)DTS(Data Transmission Service)支持兩個MySQL數(shù)據(jù)庫之間的數(shù)據(jù)同步,本文以RDS MySQL實例之間的單向同步為例,介紹配置流程。
前提條件
數(shù)據(jù)同步的源RDS實例和目標RDS實例已存在,詳情請參見創(chuàng)建RDS實例。
源RDS實例和目標RDS實例的數(shù)據(jù)庫類型為MySQL。
注意事項
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%以下)。
數(shù)據(jù)同步時,請勿對源庫的同步對象使用gh-ost或pt-online-schema-change等類似工具執(zhí)行在線DDL變更,否則會導(dǎo)致同步失敗。
如果除DTS以外的數(shù)據(jù)沒有寫入目標庫,您可以使用數(shù)據(jù)管理DMS(Data Management)來執(zhí)行在線DDL變更,詳情請參見不鎖表結(jié)構(gòu)變更。
如果源庫中待遷移的表沒有主鍵或唯一約束,且所有字段沒有唯一性,可能會導(dǎo)致目標數(shù)據(jù)庫中出現(xiàn)重復(fù)數(shù)據(jù)。
全量初始化過程中,并發(fā)INSERT會導(dǎo)致目標實例的表碎片,全量初始化完成后,目標實例的表空間比源實例的表空間大。
目標庫為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ù)同步 | 收費,詳情請參見計費概述。 |
支持的同步架構(gòu)
一對一單向同步
一對多單向同步
級聯(lián)單向同步
多對一單向同步
關(guān)于各類同步架構(gòu)的介紹及注意事項,請參見數(shù)據(jù)同步拓撲介紹。
支持同步的SQL操作
操作類型 | SQL操作語句 |
DML | INSERT、UPDATE、DELETE、REPLACE |
DDL |
|
功能限制
不兼容觸發(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ù)同步實例,詳情請參見購買數(shù)據(jù)同步任務(wù)。
說明購買時,選擇源實例和目標實例均選擇為MySQL,并選擇同步拓撲為單向同步。
在左側(cè)導(dǎo)航欄,單擊數(shù)據(jù)同步。
在同步作業(yè)列表頁面頂部,選擇數(shù)據(jù)同步實例所屬地域。
定位至已購買的數(shù)據(jù)同步實例,單擊配置同步鏈路。
配置同步通道的源實例及目標實例信息。
類別
配置
說明
無
同步作業(yè)名稱
DTS會自動生成一個同步作業(yè)名稱,建議配置具有業(yè)務(wù)意義的名稱(無唯一性要求),便于后續(xù)識別。
源實例信息
實例類型
選擇RDS實例。
實例地區(qū)
購買數(shù)據(jù)同步實例時選擇的源實例地域信息,不可變更。
實例ID
選擇作為數(shù)據(jù)同步源的RDS實例ID。
數(shù)據(jù)庫賬號
填入源RDS的數(shù)據(jù)庫賬號。
說明當源RDS實例的數(shù)據(jù)庫類型為MySQL 5.5或MySQL 5.6時,無需配置數(shù)據(jù)庫賬號和數(shù)據(jù)庫密碼。
數(shù)據(jù)庫密碼
填入數(shù)據(jù)庫賬號對應(yīng)的密碼。
連接方式
根據(jù)需求選擇非加密連接或SSL安全連接。如果設(shè)置為SSL安全連接,您需要提前開啟RDS實例的SSL加密功能,詳情請參見設(shè)置SSL加密。
目標實例信息
實例類型
選擇RDS實例。
實例地區(qū)
購買數(shù)據(jù)同步實例時選擇的目標實例地域信息,不可變更。
實例ID
選擇作為數(shù)據(jù)同步目標的RDS實例ID。
數(shù)據(jù)庫賬號
填入目標RDS的數(shù)據(jù)庫賬號。
說明當目標RDS實例的數(shù)據(jù)庫類型為MySQL 5.5或MySQL 5.6時,無需配置數(shù)據(jù)庫賬號和數(shù)據(jù)庫密碼。
數(shù)據(jù)庫密碼
填入數(shù)據(jù)庫賬號對應(yīng)的密碼。
連接方式
根據(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地址段可能會存在安全風險,一旦使用本產(chǎn)品代表您已理解和確認其中可能存在的安全風險,并且需要您做好基本的安全防護,包括但不限于加強賬號密碼強度防范、限制各網(wǎng)段開放的端口號、內(nèi)部各API使用鑒權(quán)方式通信、定期檢查并限制不需要的網(wǎng)段,或者使用通過內(nèi)網(wǎng)(專線/VPN網(wǎng)關(guān)/智能網(wǎng)關(guān))的方式接入。
配置同步策略及對象信息。
配置項目
配置說明
選擇同步對象
在源庫對象框中單擊待同步的對象,然后單擊圖標將其移動至已選擇對象框。
同步對象的選擇粒度為庫、表。
說明如果選擇整個庫作為同步對象,該庫中所有對象的結(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實例。
上述配置完成后,單擊頁面右下角的下一步。
配置同步初始化的高級配置信息。
說明此步驟會將源實例中已經(jīng)存在同步對象的結(jié)構(gòu)及數(shù)據(jù)在目標實例中初始化,作為后續(xù)增量同步數(shù)據(jù)的基線數(shù)據(jù)。
同步初始化類型細分為:結(jié)構(gòu)初始化,全量數(shù)據(jù)初始化。默認情況下,需要選中結(jié)構(gòu)初始化和全量數(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)。