從RDS SQL Server同步至云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細閱讀。
數(shù)據(jù)傳輸服務(wù)DTS(Data Transmission Service)支持將SQL Server同步至云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL,幫助您輕松實現(xiàn)數(shù)據(jù)的流轉(zhuǎn),集中分析企業(yè)數(shù)據(jù)。
前提條件
快速創(chuàng)建RDS SQL Server實例,支持的版本,請參見同步方案概覽。
重要目前支持源RDS SQL Server版本為2012、2014、2016、2017或2019版本。
RDS SQL Server實例中待同步的表需具備主鍵。
云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例中同步的目標表需具備主鍵或唯一索引。
注意事項
- DTS在執(zhí)行全量數(shù)據(jù)遷移時將占用源庫和目標庫一定的讀寫資源,可能會導致數(shù)據(jù)庫的負載上升,在數(shù)據(jù)庫性能較差、規(guī)格較低或業(yè)務(wù)量較大的情況下(例如源庫有大量慢SQL、存在無主鍵表或目標庫存在死鎖等),可能會加重數(shù)據(jù)庫壓力,甚至導致數(shù)據(jù)庫服務(wù)不可用。因此您需要在執(zhí)行數(shù)據(jù)遷移前評估源庫和目標庫的性能,同時建議您在業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)遷移(例如源庫和目標庫的CPU負載在30%以下)。
為保障數(shù)據(jù)同步延遲顯示的準確性,DTS會在源庫中新增一張心跳表(名稱為
dts_log_heart_beat
)。此場景中,DTS支持初始化的結(jié)構(gòu)為Schema、Table、View、Function和Procedure。
警告由于此場景屬于異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)同步,數(shù)據(jù)類型無法一一對應(yīng),請謹慎評估數(shù)據(jù)類型的映射關(guān)系對業(yè)務(wù)的影響,詳情請參見結(jié)構(gòu)初始化涉及的數(shù)據(jù)類型映射關(guān)系。
選擇同步對象時支持的粒度為表(不支持AO表),支持修改列的映射關(guān)系。若使用列映射時為非全表同步或者源與目標表結(jié)構(gòu)不一致,則目標端比源端缺少的列的數(shù)據(jù)將會丟失。
不支持同步數(shù)據(jù)類型為TIMESTAMP、CURSOR、ROWVERSION、HIERACHYID、SQL_VARIANT、SPATIAL GEOMETRY、SPATIAL GEOGRAPHY、TABLE的數(shù)據(jù)。
費用說明
同步類型 | 鏈路配置費用 |
庫表結(jié)構(gòu)同步和全量數(shù)據(jù)同步 | 不收費。 |
增量數(shù)據(jù)同步 | 收費,詳情請參見計費概述。 |
支持同步的SQL操作
DDL操作:ADD COLUMN
說明不支持遷移事務(wù)性的DDL操作。
DML操作:INSERT、UPDATE、DELETE
數(shù)據(jù)庫賬號的權(quán)限要求
數(shù)據(jù)庫 | 所需權(quán)限 | 授權(quán)方法 |
RDS SQL Server實例 | 待同步數(shù)據(jù)庫的所有者權(quán)限。 | |
云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例 |
說明 您也可以使用云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例的初始賬號。 |
操作步驟
購買數(shù)據(jù)同步作業(yè),詳情請參見購買流程。
說明購買時,選擇源實例為SQLServer,目標實例為AnalyticDB for PostgreSQL,并選擇同步拓撲為單向同步。
- 說明 若數(shù)據(jù)傳輸控制臺自動跳轉(zhuǎn)至數(shù)據(jù)管理DMS控制臺,您可以在右下角的中單擊,返回至舊版數(shù)據(jù)傳輸控制臺。
在左側(cè)導航欄,單擊數(shù)據(jù)同步。
在同步作業(yè)列表頁面頂部,選擇同步的目標實例所屬地域。
定位至已購買的數(shù)據(jù)同步實例,單擊配置同步鏈路。
配置同步作業(yè)的源實例及目標實例信息。
類別
配置
說明
無
同步作業(yè)名稱
DTS會自動生成一個同步作業(yè)名稱,建議配置具有業(yè)務(wù)意義的名稱(無唯一性要求),便于后續(xù)識別。
源實例信息
實例類型
選擇RDS實例。
實例地區(qū)
購買數(shù)據(jù)同步實例時選擇的源實例地域信息,不可變更。
實例ID
選擇源RDS SQL Server實例ID。
數(shù)據(jù)庫賬號
填入RDS SQL Server的數(shù)據(jù)庫賬號。權(quán)限要求請參見數(shù)據(jù)庫賬號的權(quán)限要求 。
數(shù)據(jù)庫密碼
填入該數(shù)據(jù)庫賬號的密碼。
連接方式
根據(jù)需求選擇非加密連接或SSL安全連接。如果設(shè)置為SSL安全連接,您需要提前開啟RDS實例的SSL加密功能,詳情請參見設(shè)置SSL加密。
目標實例信息
實例類型
選擇為AnalyticDB for PostgreSQL。
實例地區(qū)
購買數(shù)據(jù)同步實例時選擇的目標實例地域信息,不可變更。
實例ID
選擇目標云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL實例ID。
數(shù)據(jù)庫名稱
填入同步目標表所屬的數(shù)據(jù)庫名稱。
數(shù)據(jù)庫賬號
填入云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL的數(shù)據(jù)庫賬號。權(quán)限要求請參見數(shù)據(jù)庫賬號的權(quán)限要求 。
數(shù)據(jù)庫密碼
填入該數(shù)據(jù)庫賬號對應(yīng)的密碼。
單擊頁面右下角的授權(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ù)庫是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ù)據(jù)初始化和增量數(shù)據(jù)初始化。預檢查完成后,DTS會將源實例中待同步對象的結(jié)構(gòu)和存量數(shù)據(jù)同步至目標在目標庫,作為后續(xù)增量同步數(shù)據(jù)的基線數(shù)據(jù)。
目標已存在表的處理模式
預檢查并報錯攔截:檢查目標數(shù)據(jù)庫中是否有同名的表。如果目標數(shù)據(jù)庫中沒有同名的表,則通過該檢查項目;如果目標數(shù)據(jù)庫中有同名的表,則在預檢查階段提示錯誤,數(shù)據(jù)同步作業(yè)不會被啟動。
說明如果目標庫中同名的表不能刪除或重命名,您可以更改該表在目標庫中的名稱,詳情請參見設(shè)置同步對象在目標實例中的名稱。
忽略報錯并繼續(xù)執(zhí)行:跳過目標數(shù)據(jù)庫中是否有同名表的檢查項。
警告選擇為忽略報錯并繼續(xù)執(zhí)行,可能導致數(shù)據(jù)不一致,給業(yè)務(wù)帶來風險,例如:
表結(jié)構(gòu)一致的情況下,在目標庫遇到與源庫主鍵的值相同的記錄,則會保留目標集群中的該條記錄,即源庫中的該條記錄不會同步至目標數(shù)據(jù)庫中。
表結(jié)構(gòu)不一致的情況下,可能會導致無法初始化數(shù)據(jù)、只能同步部分列的數(shù)據(jù)或同步失敗。
多表歸并
選擇為是:通常在OLTP場景中,為提高業(yè)務(wù)表響應(yīng)速度,通常會做分庫分表處理。而在云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL中單個數(shù)據(jù)表可存儲海量數(shù)據(jù),使用單表查詢更加便捷。此類場景中,您可以借助DTS的多表歸并功能將源庫中多個表結(jié)構(gòu)相同的表(即各分表)同步至云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL中的同一個表中。
說明選擇源庫的多個表后,您需要通過對象名映射功能,將其改為云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL中的同一個表名。關(guān)于對象名映射功能的介紹,請參見設(shè)置同步對象在目標實例中的名稱。
您需要在云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL的同步目標表中增加
__dts_data_source
列(類型為text)來存儲數(shù)據(jù)來源。DTS將以<dts數(shù)據(jù)同步實例ID>:<源數(shù)據(jù)庫名>.<源Schema名>.<源表名>
的格式寫入列值用于區(qū)分表的來源,例如dts********:dtstestdata.testschema.customer1
。多表歸并功能基于任務(wù)級別,即不支持基于表級別執(zhí)行多表歸并。如果需要讓部分表執(zhí)行多表歸并,另一部分不執(zhí)行多表歸并,您需要創(chuàng)建兩個數(shù)據(jù)同步作業(yè)。
選擇為否:默認選項。
同步操作類型
根據(jù)業(yè)務(wù)選中需要同步的操作類型,默認情況下都處于選中狀態(tài)。
選擇同步對象
在源庫對象框中單擊待遷移的對象,然后單擊圖標將其移動至已選擇對象框。
本場景為異構(gòu)數(shù)據(jù)庫間同步,因此同步對象選擇的粒度為表,且其他對象(如視圖、觸發(fā)器、存儲過程)不會被同步至目標庫。
說明默認情況下,同步對象的名稱保持不變。如果您需要同步對象在目標實例上名稱不同,請使用對象名映射功能,詳情請參見設(shè)置同步對象在目標實例中的名稱。
如果配置多表歸并為是,在選擇源庫的多個表后,您需要通過對象名映射功能,將其改為云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL中的同一個表名。
為目標對象添加引號
選擇是否需要為目標對象名添加引號。如果選擇為是,且存在下述情況,DTS在結(jié)構(gòu)初始化階段和增量數(shù)據(jù)遷移階段會為目標對象添加單引號或雙引號:
源庫所屬的業(yè)務(wù)環(huán)境對大小寫敏感且大小寫混用。
源表名不是以字母開頭,且包含字母、數(shù)字或特殊字符以外的字符。
說明特殊字符僅支持下劃線(_),井號(#)和美元符號($)。
待遷移的Schema、表或列名稱是目標庫的關(guān)鍵字、保留字或非法字符。
說明如果選擇添加引號,在數(shù)據(jù)同步完成后,您需使用帶引號的目標對象名進行查詢。
映射名稱更改
如需更改同步對象在目標實例中的名稱,請使用對象名映射功能,詳情請參見庫表列映射。
源、目標庫無法連接重試時間
當源、目標庫無法連接時,DTS默認重試720分鐘(即12小時),您也可以自定義重試時間。如果DTS在設(shè)置的時間內(nèi)重新連接上源、目標庫,同步任務(wù)將自動恢復。否則,同步任務(wù)將失敗。說明 由于連接重試期間,DTS將收取任務(wù)運行費用,建議您根據(jù)業(yè)務(wù)需要自定義重試時間,或者在源和目標庫實例釋放后盡快釋放DTS實例。設(shè)置待同步的表在云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL中表類型、主鍵列和分布鍵信息。
上述配置完成后,單擊頁面右下角的預檢查并啟動。
說明在同步作業(yè)正式啟動之前,會先進行預檢查。只有預檢查通過后,才能成功啟動同步作業(yè)。
如果預檢查失敗,單擊具體檢查項后的,查看失敗詳情。
您可以根據(jù)提示修復后重新進行預檢查。
如無需修復告警檢測項,您也可以選擇確認屏蔽、忽略告警項并重新進行預檢查,跳過告警檢測項重新進行預檢查。
在預檢查對話框中顯示預檢查通過后,關(guān)閉預檢查對話框,同步作業(yè)將正式開始。
等待同步作業(yè)的鏈路初始化完成,直至處于同步中狀態(tài)。
您可以在數(shù)據(jù)同步頁面,查看數(shù)據(jù)同步作業(yè)的狀態(tài)。
常見問題
Q:如何在云原生數(shù)據(jù)倉庫AnalyticDB PostgreSQL找到同步的目標表?
A:DTS的結(jié)構(gòu)初始化會遵循源庫的結(jié)構(gòu)將其同步至目標庫。本案例中,您可以在目標實例的dtstestdata
數(shù)據(jù)庫的dbo
Schema中,找到customer
表和Student
表,如下圖所示。