Data Transmission Service支援將SQL Server同步至雲原生資料倉儲AnalyticDB PostgreSQL,協助您輕鬆實現資料的流轉,集中分析企業資料。
前提條件
快速建立RDS SQL Server執行個體,支援的版本,請參見同步方案概覽。
重要目前支援源RDS SQL Server版本為2012、2014、2016、2017或2019版本。
RDS SQL Server執行個體中待同步的表需具備主鍵。
雲原生資料倉儲AnalyticDB PostgreSQL執行個體中同步的目標表需具備主鍵或唯一索引。
注意事項
DTS在執行全量資料移轉時將佔用源庫和目標庫一定的讀寫資源,可能會導致資料庫的負載上升,在資料庫效能較差、規格較低或業務量較大的情況下(例如源庫有大量慢SQL、存在無主鍵表或目標庫存在死結等),可能會加重資料庫壓力,甚至導致資料庫服務不可用。因此您需要在執行資料移轉前評估源庫和目標庫的效能,同時建議您在業務低峰期執行資料移轉(例如源庫和目標庫的CPU負載在30%以下)。
為保障資料同步延遲顯示的準確性,DTS會在源庫中新增一張心跳錶(名稱為
dts_log_heart_beat)。此情境中,DTS支援初始化的結構為Schema、Table、View、Function和Procedure。
警告由於此情境屬於異構資料庫間的資料同步,資料類型無法一一對應,請謹慎評估資料類型的映射關係對業務的影響,詳情請參見結構初始化涉及的資料類型映射關係。
選擇同步對象時支援的粒度為表(不支援AO表),支援修改列的映射關係。若使用列映射時為非全表同步或者源與目標表結構不一致,則目標端比源端缺少的列的資料將會丟失。
不支援同步資料類型為TIMESTAMP、CURSOR、ROWVERSION、HIERACHYID、SQL_VARIANT、SPATIAL GEOMETRY、SPATIAL GEOGRAPHY、TABLE的資料。
費用說明
| 同步類型 | 鏈路配置費用 |
| 庫表結構同步和全量資料同步 | 不收費。 |
| 增量資料同步 | 收費,詳情請參見計費概述。 |
支援同步的SQL操作
DDL操作:ADD COLUMN
說明不支援遷移事務性的DDL操作。
DML操作:INSERT、UPDATE、DELETE
資料庫帳號的許可權要求
資料庫 | 要求的權限 | 授權方法 |
RDS SQL Server執行個體 | 待同步資料庫的所有者許可權。 | |
雲原生資料倉儲AnalyticDB PostgreSQL執行個體 |
說明 您也可以使用雲原生資料倉儲AnalyticDB PostgreSQL執行個體的初始帳號。 |
操作步驟
購買資料同步作業,詳情請參見購買流程。
說明購買時,選擇源執行個體為SQLServer,目標執行個體為AnalyticDB for PostgreSQL,並選擇同步拓撲為單向同步。
登入資料轉送控制台。
說明若資料轉送控制台自動跳轉至Data Management控制台,您可以在右下角的
中單擊
,返回至舊版資料轉送控制台。在左側導覽列,單擊資料同步。
在同步作業列表頁面頂部,選擇同步的目標執行個體所屬地區。
定位至已購買的資料同步執行個體,單擊配置同步鏈路。
配置同步作業的源執行個體及目標執行個體資訊。
類別
配置
說明
無
同步作業名稱
DTS會自動產生一個同步作業名稱,建議配置具有業務意義的名稱(無唯一性要求),便於後續識別。
源執行個體資訊
執行個體類型
選擇RDS執行個體。
執行個體地區
購買資料同步執行個體時選擇的源執行個體地區資訊,不可變更。
執行個體ID
選擇源RDS SQL Server執行個體ID。
資料庫帳號
填入RDS SQL Server的資料庫帳號。許可權要求請參見資料庫帳號的許可權要求 。
資料庫密碼
填入該資料庫帳號的密碼。
串連方式
根據需求選擇非加密串連或SSL安全連線。如果設定為SSL安全連線,您需要提前開啟RDS執行個體的SSL加密功能,詳情請參見設定SSL加密。
說明目前僅中國內地及中國香港地區支援設定串連方式。
目標執行個體資訊
執行個體類型
選擇為AnalyticDB for PostgreSQL。
執行個體地區
購買資料同步執行個體時選擇的目標執行個體地區資訊,不可變更。
執行個體ID
選擇目標雲原生資料倉儲AnalyticDB PostgreSQL執行個體ID。
資料庫名稱
填入同步目標表所屬的資料庫名稱。
資料庫帳號
填入雲原生資料倉儲AnalyticDB PostgreSQL的資料庫帳號。許可權要求請參見資料庫帳號的許可權要求 。
資料庫密碼
填入該資料庫帳號對應的密碼。
單擊頁面右下角的授權白名單並進入下一步。
如果源或目標資料庫是阿里雲資料庫執行個體(例如RDS MySQL、ApsaraDB for MongoDB等),DTS會自動將對應地區DTS服務的IP地址添加到阿里雲資料庫執行個體的白名單中;如果源或目標資料庫是ECS上的自建資料庫,DTS會自動將對應地區DTS服務的IP地址添到ECS的安全規則中,您還需確保自建資料庫沒有限制ECS的訪問(若資料庫是叢集部署在多個ECS執行個體,您需要手動將DTS服務對應地區的IP地址添到其餘每個ECS的安全規則中);如果源或目標資料庫是IDC自建資料庫或其他雲資料庫,則需要您手動添加對應地區DTS服務的IP地址,以允許來自DTS伺服器的訪問。DTS服務的IP地址,請參見DTS伺服器的IP位址區段。
警告DTS自動添加或您手動添加DTS服務的公網IP位址區段可能會存在安全風險,一旦使用本產品代表您已理解和確認其中可能存在的安全風險,並且需要您做好基本的安全防護,包括但不限於加強帳號密碼強度防範、限制各網段開放的連接埠號碼、內部各API使用鑒權方式通訊、定期檢查並限制不需要的網段,或者使用通過內網(專線/VPN網關/智能網關)的方式接入。
配置同步策略和同步對象。

配置
說明
同步初始化
預設選中結構初始化、全量資料初始化和增量資料初始化。預檢查完成後,DTS會將源執行個體中待同步對象的結構和存量資料同步至目標在目標庫,作為後續增量同步處理資料的基準資料。
目標已存在表的處理模式
預檢查並報錯攔截:檢查目標資料庫中是否有同名的表。如果目標資料庫中沒有同名的表,則通過該檢查專案;如果目標資料庫中有同名的表,則在預檢查階段提示錯誤,資料同步作業不會被啟動。
說明如果目標庫中同名的表不能刪除或重新命名,您可以更改該表在目標庫中的名稱,詳情請參見設定同步對象在目標執行個體中的名稱。
忽略報錯並繼續執行:跳過目標資料庫中是否有同名表的檢查項。
警告選擇為忽略報錯並繼續執行,可能導致資料不一致,給業務帶來風險,例如:
表結構一致的情況下,在目標庫遇到與源庫主鍵的值相同的記錄,則會保留目的地組群中的該條記錄,即源庫中的該條記錄不會同步至目標資料庫中。
表結構不一致的情況下,可能會導致無法初始化資料、只能同步部分列的資料或同步失敗。
多表歸併
選擇為是:通常在OLTP情境中,為提高業務表響應速度,通常會做分庫分表處理。而在雲原生資料倉儲AnalyticDB PostgreSQL中單個資料表可儲存海量資料,使用單表查詢更加便捷。此類情境中,您可以藉助DTS的多表歸併功能將源庫中多個表結構相同的表(即各分表)同步至雲原生資料倉儲AnalyticDB PostgreSQL中的同一個表中。
說明選擇源庫的多個表後,您需要通過對象名映射功能,將其改為雲原生資料倉儲AnalyticDB PostgreSQL中的同一個表名。關於對象名映射功能的介紹,請參見設定同步對象在目標執行個體中的名稱。
您需要在雲原生資料倉儲AnalyticDB PostgreSQL的同步目標表中增加
__dts_data_source列(類型為text)來儲存資料來源。DTS將以<dts資料同步執行個體ID>:<來源資料庫名>.<源Schema名>.<源表名>的格式寫入列值用於區分表的來源,例如dts********:dtstestdata.testschema.customer1。多表歸併功能基於任務層級,即不支援基於表層級執行多表歸併。如果需要讓部分表執行多表歸併,另一部分不執行多表歸併,您需要建立兩個資料同步作業。
選擇為否:預設選項。
同步操作類型
根據業務選中需要同步的操作類型,預設情況下都處於選中狀態。
選擇同步對象
在源庫對象框中單擊待遷移的對象,然後單擊
表徵圖將其移動至已選擇對象框。本情境為異構資料庫間同步,因此同步對象選擇的粒度為表,且其他對象(如視圖、觸發器、預存程序)不會被同步至目標庫。
說明預設情況下,同步對象的名稱保持不變。如果您需要同步對象在目標執行個體上名稱不同,請使用對象名映射功能,詳情請參見設定同步對象在目標執行個體中的名稱。
如果配置多表歸併為是,在選擇源庫的多個表後,您需要通過對象名映射功能,將其改為雲原生資料倉儲AnalyticDB PostgreSQL中的同一個表名。
為目標對象添加引號
選擇是否需要為目標對象名添加引號。如果選擇為是,且存在下述情況,DTS在結構初始化階段和增量資料移轉階段會為目標對象添加單引號或雙引號:
源庫所屬的業務環境對大小寫敏感且大小寫混用。
源表名不是以字母開頭,且包含字母、數字或特殊字元以外的字元。
說明特殊字元僅支援底線(_),井號(#)和貨幣符號($)。
待遷移的Schema、表或列名稱是目標庫的關鍵字、保留字或非法字元。
說明如果選擇添加引號,在資料同步完成後,您需使用帶引號的目標對象名進行查詢。
映射名稱更改
如需更改同步對象在目標執行個體中的名稱,請使用對象名映射功能,詳情請參見庫表列映射。
源、目標庫無法串連重試時間
當源、目標庫無法串連時,DTS預設重試720分鐘(即12小時),您也可以自訂重試時間。如果DTS在設定的時間內重新串連上源、目標庫,同步任務將自動回復。否則,同步任務將失敗。
說明由於串連重試期間,DTS將收取任務運行費用,建議您根據業務需要自訂重試時間,或者在源和目標庫執行個體釋放後儘快釋放DTS執行個體。
設定待同步的表在雲原生資料倉儲AnalyticDB PostgreSQL中表類型、主鍵列和分布鍵資訊。
上述配置完成後,單擊頁面右下角的預檢查並啟動。
說明在同步作業正式啟動之前,會先進行預檢查。只有預檢查通過後,才能成功啟動同步作業。
如果預檢查失敗,單擊具體檢查項後的
,查看失敗詳情。您可以根據提示修複後重新進行預檢查。
如無需修複警示檢測項,您也可以選擇確認屏蔽、忽略警示項並重新進行預檢查,跳過警示檢測項重新進行預檢查。
在預檢查對話方塊中顯示預檢查通過後,關閉預檢查對話方塊,同步作業將正式開始。
等待同步作業的鏈路初始化完成,直至處於同步中狀態。
您可以在資料同步頁面,查看資料同步作業的狀態。

常見問題
Q:如何在雲原生資料倉儲AnalyticDB PostgreSQL找到同步的目標表?
A:DTS的結構初始化會遵循源庫的結構將其同步至目標庫。本案例中,您可以在目標執行個體的dtstestdata資料庫的dbo Schema中,找到customer表和Student表,如下圖所示。
