本文說明 適用於 PostgreSQL 的 Azure 資料庫 單一伺服器和彈性伺服器在無法使用區域配對進行複寫和異地還原的地理區域之間的遷移指引。
有各種原因讓您想要將現有的 Azure 資源從某個區域移至另一個區域。 您可能想要:
- 利用新的 Azure 區域。
- 只部署特定區域中可用的功能或服務。
- 符合內部政策和治理要求。
- 與公司合併和收購保持一致
- 符合容量規劃需求。
欲了解如何重新定位 Azure Cosmos DB for PostgreSQL(前稱 適用於 PostgreSQL 的 Azure 資料庫 - Hyperscale (Citus)),請參閱 Read replicas in Azure Cosmos DB for PostgreSQL 。
關於原生複製支援的區域對概述,請參見 跨區域複製。
Prerequisites
先決條件只適用於 帶著資料重新部署。 若要在沒有資料的情況下移動資料庫,可以跳到 準備。
若要將 PostgreSQL 從一個區域的資料遷移到另一個區域,您必須擁有額外的運算資源來執行備份與還原工具。 本指南中的範例是使用 Azure 虛擬機執行 Ubuntu 20.04 LTS。 運算資源必須:
- 同時擁有對來源伺服器與目標伺服器的網路存取權限,無論是在私有網路上,還是透過防火牆規則的加入。
- 必須位於來源區或目標區域。
- 使用 加速網路 (如果有的話)。
- 資料庫內容不會被儲存到任何中介儲存裝置;邏輯備份工具的輸出會直接送回目標伺服器。
根據你對 適用於 PostgreSQL 的 Azure 資料庫 實例設計的不同,以下依賴資源可能需要在目標區域部署與配置,然後再進行搬遷:
停機時間
若要瞭解可能的停機情況,請參閱適用於 Azure 的雲端採用架構:選取重新配置方法。
Prepare
若要開始,請匯出 Resource Manager 範本。 此範本包含描述您的自動化命名空間的設定。
登入 Azure 入口網站。
選擇 所有資源 ,然後選擇你的自動化資源。
選擇 匯出範本。
在匯出範本頁面選擇下載。
找到你從入口網站下載的 .zip 檔案,然後解壓縮到你選擇的資料夾。
此 zip 檔案包含 .json 檔案,內含範本和用來部署範本的指令碼。
在沒有資料的情況下重新部署
調整匯出的範本參數,使其與目的地區域相符。
這很重要
目標伺服器必須與來源伺服器名稱不同。 你必須重新設定客戶端指向新伺服器。
將範本重新部署到新區域。 關於如何使用 ARM 範本建立 適用於 PostgreSQL 的 Azure 資料庫 的範例,請參見快速入門:使用 ARM 範本建立 適用於 PostgreSQL 的 Azure 資料庫 - Flexible Server。
使用資料重新部署
適用於 PostgreSQL 的 Azure 資料庫 的重新部署與資料遷移基於邏輯備份與還原,且需要原生工具。 因此,在還原期間,您可以預期會出現明顯的停機。
提示
你可以使用 Azure 入口網站重新配置 適用於 PostgreSQL 的 Azure 資料庫 - Flexible Server。 欲了解如何為單一伺服器執行複寫,請參閱使用 Azure 入口網站將 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器移至其他區域。
調整匯出的範本參數,使其與目的地區域相符。
這很重要
目標伺服器名稱必須與來源伺服器名稱不同。 你必須重新設定客戶端指向新伺服器。
將範本重新部署到新區域。 關於如何使用 ARM 範本建立 適用於 PostgreSQL 的 Azure 資料庫 的範例,請參見快速入門:使用 ARM 範本建立 適用於 PostgreSQL 的 Azure 資料庫 - Flexible Server。
在為移轉佈建的運算資源上,安裝與要移轉的 PostgreSQL 版本相對應的 PostgreSQL 用戶端工具。 以下範例使用 PostgreSQL 版本 13,運行於執行 Ubuntu 20.04 LTS 的 Azure 虛擬機:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get install -y postgresql-client-13欲了解更多關於 Ubuntu 中安裝 PostgreSQL 元件的資訊,請參閱 Linux 下載(Ubuntu)。
其他平台請前往 PostgreSQL 下載。
(可選)如果你在來源伺服器建立了額外角色,請在目標伺服器中建立。 要取得現有角色清單,請使用以下查詢:
select * from pg_catalog.pg_roles where rolename not like 'pg_%' and rolename not in ('azuresu', 'azure_pg_admin', 'replication') order by rolename;要遷移每個資料庫,請執行以下步驟:
停止源伺服器上的所有資料庫活動。
請將憑證資訊、來源伺服器、目標伺服器及資料庫名稱替換為以下腳本:
export USER=admin_username export PGPASSWORD=admin_password export SOURCE=pgsql-arpp-source.postgres.database.azure.com export TARGET=pgsql-arpp-target.postgres.database.azure.com export DATABASE=database_name pg_dump -h $SOURCE -U $USER --create --exclude-schema=pg_catalog $DATABASE | psql -h $TARGET -U $USER postgres要遷移資料庫,執行腳本。
設定客戶端指向目標伺服器。
對應用程式進行功能測試。
- 確保
ignoreMissingVnetServiceEndpoint旗標設為False,這樣當服務端點未在目標區域設定時,IaC 就無法部署資料庫。
- 確保