共用方式為


將適用於 PostgreSQL 的 Azure 資料庫重新放置到另一個區域

本文涵蓋地理位置的適用於 PostgreSQL 的 Azure 資料庫、單一伺服器和彈性伺服器的重新配置指引,其中區域組無法用於複寫和異地還原。

有各種原因讓您想要將現有的 Azure 資源從某個區域移至另一個區域。 您可能想要:

  • 利用新的 Azure 區域。
  • 只部署特定區域中可用的功能或服務。
  • 符合內部原則和治理需求。
  • 與公司合併和收購保持一致
  • 符合容量規劃需求。

若要了解如何重新配置適用於 PostgreSQL 的 Azure Cosmos DB (先前稱為適用於 PostgreSQL 的 Azure 資料庫 - 超大規模資料庫 (Citus)),請參閱適用於 PostgreSQL 的 Azure Cosmos DB 中的讀取複本

如需原生複寫所支援區域組的概觀,請參閱跨區域複寫

必要條件

必要條件僅適用於使用資料重新部署。 若要移動沒有資料的資料庫,您可以跳至 [準備]

  • 若要將包含資料的 PostgreSQL 從某個區域重新放置到另一個區域,您必須有額外的計算資源來執行備份與還原工具。 本指南中的範例會使用執行 Ubuntu 20.04 LTS 的 Azure VM。 計算資源必須:
    • 在私人網路中或包含在防火牆規則中同時擁有來源和目標伺服器的網路存取權。
    • 位於來源或目標區域中。
    • 使用加速網路 (若有)。
    • 資料庫內容不會儲存至任何中繼記憶體;邏輯備份工具的輸出會直接傳送至目標伺服器。
  • 根據您的適用於 PostgreSQL 的 Azure 資料庫執行個體設計,在重新配置之前,可能需要在目標區域中部署及設定下列相依資源:

停機

若要瞭解可能的停機情況,請參閱適用於 Azure 的雲端採用架構:選取重新配置方法

準備

若要開始,請匯出 Resource Manager 範本。 此範本包含了描述自動化命名空間的設定。

  1. 登入 Azure 入口網站

  2. 選取 [所有資源],然後選取您的自動化資源。

  3. 選取 [匯出範本]

  4. [匯出範本] 頁面中選擇 [下載]

  5. 找出您從入口網站下載的 .zip 檔案,然後將該檔案解壓縮至您選擇的資料夾。

    此 zip 檔案包含 .json 檔案,內含範本和用來部署範本的指令碼。

在沒有資料的情況下重新部署

  1. 調整匯出的範本參數,以符合目的地區域。

重要

目標伺服器必須與來源伺服器的名稱不同。 您必須重新設定用戶端以指向新的伺服器。

  1. 將範本重新部署至新的區域。 如需如何使用 ARM 範本建立適用於 PostgreSQL 的 Azure 資料庫範例,請參閱快速入門:使用 ARM 範本建立適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

使用資料重新部署

針對適用於 PostgreSQL 的 Azure 資料庫進行資料移轉的重新部署是以邏輯備份與還原為基礎,而且需要原生工具。 因此,您可以預期在還原期間有明顯的停機時間。

提示

您可以使用 Azure 入口網站重新放置適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 若要了解如何執行單一伺服器的複寫,請參閱使用 Azure 入口網站將適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器移至另一個區域

  1. 調整匯出的範本參數,以符合目的地區域。

重要

目標伺服器名稱必須與來源伺服器名稱不同。 您必須重新設定用戶端以指向新的伺服器。

  1. 將範本重新部署至新的區域。 如需如何使用 ARM 範本建立適用於 PostgreSQL 的 Azure 資料庫範例,請參閱快速入門:使用 ARM 範本建立適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

  2. 在為移轉佈建的計算資源上,安裝所要移轉 PostgreSQL 版本的 PostgreSQL 用戶端工具。 下列範例會在執行 Ubuntu 20.04 LTS 的 Azure VM 上使用 PostgreSQL 第 13 版:

      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 下載

  3. (選擇性) 如果您在來源伺服器中建立其他角色,請在目標伺服器中建立這些角色。 若要取得現有角色的清單,請使用下列查詢:

    select *
    from pg_catalog.pg_roles
    where rolename not like 'pg_%' and rolename not in ('azuresu', 'azure_pg_admin', 'replication')
    order by rolename;
    
  4. 若要移轉每個資料庫,請執行下列步驟:

    1. 停止來源伺服器上的所有資料庫活動。
    2. 在下列指令碼中取代認證資訊、來源伺服器、目標伺服器和資料庫名稱:
        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
    
    1. 若要移轉資料庫,請執行指令碼。

    2. 將客戶端設定為指向目標伺服器。

    3. 對應用程式執行功能測試。

      1. 請確定 ignoreMissingVnetServiceEndpoint 旗標已設定為 False,因此當目標區域中未設定服務端點時,IaC 無法部署資料庫。