PolarDB MySQL同步至AnalyticDB for PostgreSQL
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務造成影響,請務必仔細閱讀。
數(shù)據(jù)傳輸服務DTS(Data Transmission Service)支持將PolarDB MySQL數(shù)據(jù)同步至AnalyticDB PostgreSQL,幫助您輕松實現(xiàn)數(shù)據(jù)的流轉(zhuǎn),將企業(yè)數(shù)據(jù)集中分析。
前提條件
PolarDB MySQL版集群已開啟Binlog,詳情請參見如何開啟Binlog。
PolarDB MySQL版集群中待同步的數(shù)據(jù)表必須具備主鍵。
已創(chuàng)建目標云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例,詳情請參見創(chuàng)建云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例。
注意事項
DTS在執(zhí)行全量數(shù)據(jù)初始化時將占用源庫和目標庫一定的讀寫資源,可能會導致數(shù)據(jù)庫的負載上升,在數(shù)據(jù)庫性能較差、規(guī)格較低或業(yè)務量較大的情況下(例如源庫有大量慢SQL、存在無主鍵表或目標庫存在死鎖等),可能會加重數(shù)據(jù)庫壓力,甚至導致數(shù)據(jù)庫服務不可用。因此您需要在執(zhí)行數(shù)據(jù)同步前評估源庫和目標庫的性能,同時建議您在業(yè)務低峰期執(zhí)行數(shù)據(jù)同步(例如源庫和目標庫的CPU負載在30%以下)。
全量初始化過程中,并發(fā)INSERT會導致目標實例的表碎片,全量初始化完成后,目標實例的表空間比源集群的表空間大。
若源庫待同步的數(shù)據(jù)中存在日期類型的數(shù)據(jù)
0000-00-00 00:00:00
,則可能會導致任務失敗。說明DTS將該日期數(shù)據(jù)同步到目標庫時會轉(zhuǎn)換為
null
。您可以臨時將源庫數(shù)據(jù)修改為0001-01-01 00:00:00
,或者將目標庫對應字段設置為可空。
費用說明
同步類型 | 鏈路配置費用 |
庫表結(jié)構(gòu)同步和全量數(shù)據(jù)同步 | 不收費。 |
增量數(shù)據(jù)同步 | 收費,詳情請參見計費概述。 |
同步限制
同步對象僅支持數(shù)據(jù)表,且目標表暫不支持AO表。
不支持BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT、POINT類型的數(shù)據(jù)同步。
暫不支持同步前綴索引,如果源庫存在前綴索引可能導致數(shù)據(jù)同步失敗。
在數(shù)據(jù)同步時,請勿對源庫的同步對象使用gh-ost或pt-online-schema-change等類似工具執(zhí)行在線DDL變更,否則會導致同步失敗。
支持同步的SQL操作
DML操作:INSERT、UPDATE、DELETE。
DDL操作:ADD COLUMN。
說明不支持CREATE TABLE操作,如果您需要將新增的表作為同步對象,則需要執(zhí)行新增同步對象操作。
支持的同步架構(gòu)
1對1單向同步。
1對多單向同步。
多對1單向同步。
術(shù)語對應關(guān)系
PolarDB MySQL版 | 云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL |
Database | Schema |
Table | Table |
操作步驟
購買數(shù)據(jù)同步作業(yè),詳情請參見購買流程。
說明購買時,選擇源實例為PolarDB、目標實例為AnalyticDB PostgreSQL,并選擇同步拓撲為單向同步。
- 說明
若數(shù)據(jù)傳輸控制臺自動跳轉(zhuǎn)至數(shù)據(jù)管理DMS控制臺,您可以在右下角的中單擊,返回至舊版數(shù)據(jù)傳輸控制臺。
在左側(cè)導航欄,單擊數(shù)據(jù)同步。
在同步作業(yè)列表頁面頂部,選擇同步的目標實例所屬地域。
定位至已購買的數(shù)據(jù)同步實例,單擊配置同步鏈路。
配置同步通道的源實例及目標實例信息。
類別
配置
說明
無
同步作業(yè)名稱
DTS會自動生成一個同步作業(yè)名稱,建議配置具有業(yè)務意義的名稱(無唯一性要求),便于后續(xù)識別。
源實例信息
實例類型
固定為PolarDB實例。
實例地區(qū)
購買數(shù)據(jù)同步實例時選擇的源PolarDB MySQL版集群的地域信息,不可變更。
PolarDB實例ID
選擇PolarDB MySQL版集群ID。
數(shù)據(jù)庫賬號
填入PolarDB MySQL版集群的數(shù)據(jù)庫賬號。
說明該賬號需具備待同步對象的讀權(quán)限。
數(shù)據(jù)庫密碼
填入該數(shù)據(jù)庫賬號的密碼。
目標實例信息
實例類型
固定為AnalyticDB for PostgreSQL,無需設置。
實例地區(qū)
購買數(shù)據(jù)同步實例時選擇的目標實例地域信息,不可變更。
實例ID
選擇云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例ID。
數(shù)據(jù)庫名稱
填入云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例中,待同步的目標表所屬的數(shù)據(jù)庫名稱。
數(shù)據(jù)庫賬號
填入云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL的初始賬號,詳情請參見創(chuàng)建數(shù)據(jù)庫賬號。
說明您也可以填入具備RDS_SUPERUSER權(quán)限的賬號,創(chuàng)建方法請參見用戶權(quán)限管理。
數(shù)據(jù)庫密碼
填入數(shù)據(jù)庫賬號的密碼。
單擊頁面右下角的授權(quán)白名單并進入下一步。
如果源或目標數(shù)據(jù)庫是阿里云數(shù)據(jù)庫實例(例如RDS MySQL、云數(shù)據(jù)庫MongoDB版等),DTS會自動將對應地區(qū)DTS服務的IP地址添加到阿里云數(shù)據(jù)庫實例的白名單中;如果源或目標數(shù)據(jù)庫是ECS上的自建數(shù)據(jù)庫,DTS會自動將對應地區(qū)DTS服務的IP地址添到ECS的安全規(guī)則中,您還需確保自建數(shù)據(jù)庫沒有限制ECS的訪問(若數(shù)據(jù)庫是集群部署在多個ECS實例,您需要手動將DTS服務對應地區(qū)的IP地址添到其余每個ECS的安全規(guī)則中);如果源或目標數(shù)據(jù)庫是IDC自建數(shù)據(jù)庫或其他云數(shù)據(jù)庫,則需要您手動添加對應地區(qū)DTS服務的IP地址,以允許來自DTS服務器的訪問。DTS服務的IP地址,請參見DTS服務器的IP地址段。
警告DTS自動添加或您手動添加DTS服務的公網(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ù)據(jù)初始化。預檢查完成后,DTS會將源實例中待同步對象的結(jié)構(gòu)及數(shù)據(jù)在目標實例中初始化,作為后續(xù)增量同步數(shù)據(jù)的基線數(shù)據(jù)。
目標已存在表的處理模式
清空目標表的數(shù)據(jù)
在預檢查階段跳過同名對象存在性檢查的檢查項目。全量初始化之前將目標表的數(shù)據(jù)清空。適用于完成同步任務測試后的正式同步場景。
忽略報錯并繼續(xù)執(zhí)行
在預檢查階段跳過同名對象存在性檢查的檢查項目。全量初始化時直接追加數(shù)據(jù)。適用于多張表同步到一張表的匯總同步場景。
同步操作類型
根據(jù)業(yè)務需求選擇需要同步的操作類型:
Insert
Update
Delete
AlterTable
選擇同步對象
無
在源庫對象框中單擊待同步的表,然后單擊圖標將其移動至已選擇對象框。
說明同步對象的選擇粒度為表。
如果需要目標表中的列名稱與源表不同,需要使用DTS的字段映射功能,詳情請參見設置同步對象在目標實例中的名稱。
映射名稱更改
無
如需更改同步對象在目標實例中的名稱,請使用對象名映射功能,詳情請參見庫表列映射。
重要若使用列映射時為非全表同步或者源與目標表結(jié)構(gòu)不一致,則目標端比源端缺少的列的數(shù)據(jù)將會丟失。
源表DMS_ONLINE_DDL過程中是否復制臨時表到目標庫
無
如源庫使用數(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ù)過大,可能會導致同步任務延遲。
否:不同步Online DDL變更產(chǎn)生的臨時表數(shù)據(jù),只同步源庫的原始DDL數(shù)據(jù)。
說明該方案會導致目標庫鎖表。
源、目標庫無法連接重試時間
無
當源、目標庫無法連接時,DTS默認重試720分鐘(即12小時),您也可以自定義重試時間。如果DTS在設置的時間內(nèi)重新連接上源、目標庫,同步任務將自動恢復。否則,同步任務將失敗。
說明由于連接重試期間,DTS將收取任務運行費用,建議您根據(jù)業(yè)務需要自定義重試時間,或者在源和目標庫實例釋放后盡快釋放DTS實例。
設置待同步的表在云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL中的主鍵列和分布列信息。
上述配置完成后,單擊頁面右下角的預檢查并啟動。
說明在同步作業(yè)正式啟動之前,會先進行預檢查。只有預檢查通過后,才能成功啟動同步作業(yè)。
如果預檢查失敗,單擊具體檢查項后的,查看失敗詳情。
您可以根據(jù)提示修復后重新進行預檢查。
如無需修復告警檢測項,您也可以選擇確認屏蔽、忽略告警項并重新進行預檢查,跳過告警檢測項重新進行預檢查。
在預檢查對話框中顯示預檢查通過后,關(guān)閉預檢查對話框,同步作業(yè)將正式開始。
等待同步作業(yè)的鏈路初始化完成,直至處于同步中狀態(tài)。
您可以在數(shù)據(jù)同步頁面,查看數(shù)據(jù)同步作業(yè)的狀態(tài)。