數據傳輸服務DTS(Data Transmission Service)支持將自建PostgreSQL同步至云原生數據倉庫AnalyticDB PostgreSQL。通過DTS提供的數據同步功能,可以輕松實現數據的流轉,將企業數據集中分析。
前提條件
- 自建PostgreSQL中待同步的數據表必須具備主鍵。
- 已創建目標云原生數據倉庫AnalyticDB PostgreSQL實例,如未創建請參見創建云原生數據倉庫AnalyticDB PostgreSQL實例。
注意事項
- 一個數據同步作業只能同步一個數據庫,如果有多個數據庫需要同步,則需要為每個數據庫創建數據同步作業。
- 在數據同步的過程中,如果要將源庫中創建的新表作為同步對象,您需要對該表執行如下操作以保障該表數據同步的一致性。
ALTER TABLE schema.table REPLICA IDENTITY FULL;
- 為保障同步任務的正常進行,目前僅支持RDS PostgreSQL 11進行主備切換,且需設置參數
rds_failover_slot_mode
為sync
,設置方式,請參見邏輯復制槽故障轉移(Logical Replication Slot Failover)。警告 若自建PostgreSQL或其他版本的RDS PostgreSQL進行主備切換,會導致同步任務失敗。 - 若源庫有長事務,且實例包含增量同步任務,則可能會導致源庫長事務提交前的預寫日志WAL(Write-Ahead Logging)無法清理而堆積,從而造成源庫磁盤空間不足。
費用說明
同步類型 | 鏈路配置費用 |
---|---|
庫表結構同步和全量數據同步 | 不收費。 |
增量數據同步 | 收費,詳情請參見計費概述。 |
同步限制
- 不支持結構初始化,即不支持將源庫中待同步對象的結構定義(例如表結構)同步至目標庫中。
- 同步對象僅支持數據表。
- 不支持BIT、VARBIT、GEOMETRY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT類型的數據同步。
- 同步過程中,如果對源庫中的同步對象執行了DDL操作,需要手動在目標庫中執行對應的DDL操作,然后重啟數據同步作業。
支持同步的SQL操作
INSERT、UPDATE、DELETE。
準備工作
根據自建PostgreSQL中待同步對象的結構,在目標云原生數據倉庫AnalyticDB PostgreSQL中創建相應的數據庫、Schema、表等結構信息,詳情請參見SQL語法。
操作步驟
- 購買數據同步作業,詳情請參見購買流程。說明 購買時,選擇源實例為PostgreSQL、目標實例為AnalyticDB for PostgreSQL,并選擇同步拓撲為單向同步。
- 登錄數據傳輸控制臺。
- 在左側導航欄,單擊數據同步。
- 在同步作業列表頁面頂部,選擇數據同步實例所屬地域。
- 定位至已購買的數據同步實例,單擊配置同步鏈路。
- 配置同步通道的源實例及目標實例信息。
類別 配置 說明 無 同步作業名稱 DTS會自動生成一個同步作業名稱,建議配置具有業務意義的名稱(無唯一性要求),便于后續識別。 源實例信息 實例類型 根據源庫的部署位置進行選擇,本文以ECS上的自建數據庫為例介紹配置流程。 說明 當自建數據庫為其他實例類型時,您還需要執行相應的準備工作,詳情請參見準備工作概覽。本文以ECS上的自建數據庫為例介紹配置流程。
實例地區 購買數據同步實例時選擇的源實例地域信息,不可變更。 ECS實例ID 選擇自建PostgreSQL數據庫所屬的ECS實例ID。 數據庫類型 固定為PostgreSQL。 端口 填入自建PostgreSQL數據庫的服務端口。 數據庫名稱 填入待同步的表所屬的數據庫名稱。 數據庫賬號 填入自建PostgreSQL的數據庫賬號。 說明 數據庫賬號須具備schema的owner權限。數據庫密碼 填入該數據庫賬號對應的密碼。 目標實例信息 實例類型 固定為AnalyticDB for PostgreSQL,無需設置。 實例地區 購買數據同步實例時選擇的目標實例地域信息,不可變更。 實例ID 選擇云原生數據倉庫AnalyticDB PostgreSQL實例ID。 數據庫名稱 填入同步目標表所屬的數據庫名稱。 數據庫賬號 填入云原生數據倉庫AnalyticDB PostgreSQL的初始賬號,詳情請參見創建數據庫賬號。 說明 您也可以填入具備RDS_SUPERUSER權限的賬號,創建方法請參見用戶權限管理。數據庫密碼 填入該數據庫賬號對應的密碼。 - 單擊頁面右下角的授權白名單并進入下一步。如果源或目標數據庫是阿里云數據庫實例(例如RDS MySQL、云數據庫MongoDB版等),DTS會自動將對應地區DTS服務的IP地址添加到阿里云數據庫實例的白名單中;如果源或目標數據庫是ECS上的自建數據庫,DTS會自動將對應地區DTS服務的IP地址添到ECS的安全規則中,您還需確保自建數據庫沒有限制ECS的訪問;如果源或目標數據庫是IDC自建數據庫或其他云數據庫,則需要您手動添加對應地區DTS服務的IP地址,以允許來自DTS服務器的訪問。DTS服務的IP地址,請參見DTS服務器的IP地址段。警告 DTS自動添加或您手動添加DTS服務的公網IP地址段可能會存在安全風險,一旦使用本產品代表您已理解和確認其中可能存在的安全風險,并且需要您做好基本的安全防護,包括但不限于加強賬號密碼強度防范、限制各網段開放的端口號、內部各API使用鑒權方式通信、定期檢查并限制不需要的網段,或者使用通過內網(專線/VPN網關/智能網關)的方式接入。
- 配置同步策略及對象信息。
類別 配置 說明 同步策略配置 同步初始化 默認情況下,您需要勾選全量數據初始化。預檢查完成后,DTS會將源實例中待同步對象的存量數據同步至目標實例,作為后續增量同步數據的基線數據。 目標已存在表的處理模式 - 清空目標表的數據
在預檢查階段跳過目標表是否為空的檢查項目。全量初始化之前將目標表的數據清空。適用于完成同步任務測試后的正式同步場景。
- 忽略報錯并繼續執行
在預檢查階段跳過目標表是否為空的檢查項目。全量初始化時直接追加遷移數據。適用于多張表同步到一張表的匯總同步場景。
同步操作類型 根據業務需求選擇需要同步的操作類型:
說明 不支持AlterTable。- Insert
- Update
- Delete
- AlterTable
選擇同步對象 無 在源庫對象框中單擊待同步的表,然后單擊將其移動至已選擇對象框。
說明- 同步對象的選擇粒度為表。
- 如果需要目標表中的列名稱與源表不同,則需要使用DTS的字段映射功能,詳情請參見設置同步對象在目標實例中的名稱。
映射名稱更改 無 如需更改同步對象在目標實例中的名稱,請使用對象名映射功能,詳情請參見庫表列映射。
源、目標庫無法連接重試時間 無 當源、目標庫無法連接時,DTS默認重試720分鐘(即12小時),您也可以自定義重試時間。如果DTS在設置的時間內重新連接上源、目標庫,同步任務將自動恢復。否則,同步任務將失敗。說明 由于連接重試期間,DTS將收取任務運行費用,建議您根據業務需要自定義重試時間,或者在源和目標庫實例釋放后盡快釋放DTS實例。 - 清空目標表的數據
- 上述配置完成后,單擊頁面右下角的預檢查并啟動。說明
- 在同步作業正式啟動之前,會先進行預檢查。只有預檢查通過后,才能成功啟動同步作業。
- 如果預檢查失敗,單擊具體檢查項后的,查看失敗詳情。
- 您可以根據提示修復后重新進行預檢查。
- 如無需修復告警檢測項,您也可以選擇確認屏蔽、忽略告警項并重新進行預檢查,跳過告警檢測項重新進行預檢查。
- 在預檢查對話框中顯示預檢查通過后,關閉預檢查對話框,同步作業將正式開始。
- 等待同步作業的鏈路初始化完成,直至處于同步中狀態。您可以在數據同步頁面,查看數據同步作業的狀態。