本文介紹如何通過RDS PostgreSQL的一鍵上雲功能將ECS或IDC自建PostgreSQL資料庫遷移到RDS PostgreSQL。該功能採用物理流複製方式,具有速度快、操作簡單、穩定性好、情境覆蓋全等特點,能夠有效提高遷移效率。
前提條件
RDS PostgreSQL執行個體需滿足以下條件。
執行個體大版本與自建PostgreSQL相同,當前支援PostgreSQL 10及以上版本。
說明如需跨大版本遷移,例如從PostgreSQL 10遷移至RDS PostgreSQL 13,需要先參考本文檔完成一鍵上雲,再通過升級資料庫大版本將RDS PostgreSQL 10升級至RDS PostgreSQL 13。
執行個體需要為主執行個體,唯讀執行個體不支援一鍵上雲。
執行個體的儲存類型為雲端硬碟。
執行個體為空白,無資料,可用儲存空間大於等於自建PostgreSQL中資料大小的總和。
自建PostgreSQL需要滿足以下條件。
網路
遷移來源
網路設定要求
阿里雲ECS自建PostgreSQL或阿里雲RDS PostgreSQL
ECS執行個體或源RDS PostgreSQL執行個體需要與目標RDS PostgreSQL執行個體處於相同VPC。如果VPC不同,則需要使用雲企業網打通,更多資訊,請參見雲企業網。
線下IDC自建PostgreSQL(IDC與VPC打通)
需要打通IDC與RDS PostgreSQL執行個體之間的內網串連。配置方法請參見VPC串連本地IDC。
如果從ECS自建PostgreSQL遷移至RDS PostgreSQL執行個體,需先完成(可選)ECS配置安全性群組。
已完成配置:配置postgresql.conf檔案。
已完成配置:建立遷移帳號。
已完成配置:更新pg_hba.conf檔案。
已完成配置:設定管理員防火牆。
注意事項
遷移上雲任務期間可以對自建PostgreSQL資料庫進行讀寫,但請勿執行遷移、重啟、變更配置等操作。
步驟一:上雲評估
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊一鍵上雲/容災搭建,單擊可行性評估頁簽。
在設定精靈的選擇情境與源端類型步驟,選擇情境為遷移上雲,並選擇遷移來源後,單擊下一步。
在目標執行個體配置步驟,單擊下一步。
在源執行個體配置步驟,選中所有已完成的配置準備項,單擊下一步。
說明源執行個體配置步驟的具體操作,請參見(可選)ECS配置安全性群組、建立遷移帳號和更新pg_hba.conf檔案。
在發起可行性評估步驟,配置源執行個體資訊。
單擊建立可行性評估任務。
說明可行性評估任務期間,執行個體狀態將變更為維護執行個體中。
步驟二:遷移上雲
只有上雲評估狀態為成功時,才能執行本步驟。
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊一鍵上雲/容災搭建,切換至遷移上雲頁簽,單擊建立遷移上雲任務。
在建立遷移上雲任務視窗中,從關聯評估任務列表中選擇步驟一:上雲評估中已成功的上雲評估任務。
說明選擇關聯評估任務後,源庫類型、源端 IP/DNS、源端Port和使用者名稱參數將會自動擷取,無需配置。
單擊發起遷移上雲,系統將自動啟動上雲任務。
警告上雲任務期間,執行個體狀態將變更為遷入資料中。您可以對自建PostgreSQL資料庫進行讀寫,但請勿執行遷移、重啟、變更配置等操作,否則將導致上雲任務失敗。
上雲切換。
在遷移上雲任務中,單擊上雲階段列的連結,查看當前上雲任務進度。
當上雲階段為增量同步處理時,可單擊操作列的上雲切換,將RDS PostgreSQL提升為主庫,正式提供服務。
在切換上雲視窗,根據上雲鬚知提示,設定源執行個體唯讀或應用停止寫入。
說明設定源執行個體唯讀:
如果源執行個體為RDS PostgreSQL執行個體,則參考如下步驟配置:
通過設定執行個體參數功能,修改源執行個體參數rds_force_trans_ro_non_sup取值為on。
使用如下語句,中斷所有現有會話。
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
如果源執行個體為自建資料庫,則參考如下步驟配置:
-- 設定資料庫唯讀 ALTER SYSTEM SET default_transaction_read_only=on; -- 重新載入參數配置使修改生效 SELECT pg_reload_conf(); -- 中斷所有現有會話 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
選中所有複選框,單擊立即切換,等待遷移完成。