共用方式為


從 Azure CLI、REST API 建立並管理讀取複本

適用於: 適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器即將淘汰。 強烈建議您升級至適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫單一伺服器會發生什麼情況? (部分機器翻譯)。

在本文中,您將了解如何透過使用 Azure CLI 與 REST API,在適用於 PostgreSQL 的 Azure 資料庫中建立與管理讀取複本。 若要深入了解讀取複本,請參閱概觀

Azure 複寫支援

讀取複本邏輯解碼都相依於 Postgres 預寫記錄檔 (WAL) 來取得相關資訊。 這兩個功能需要來自 Postgres 的不同記錄層級。 邏輯解碼需要比讀取複本更高的記錄層級。

若要設定正確的記錄層級,請使用 Azure 複寫支援參數。 Azure 複寫支援有三個設定選項:

  • 關閉:在 WAL 中放入最少資訊。 大多數適用於 PostgreSQL 的 Azure 資料庫伺服器上都無法使用此設定。
  • 複本:比關閉更詳細。 這是讓讀取複本運作所需的最低記錄層級。 此設定是大多數伺服器上的預設值。
  • 邏輯:比複本更詳細。 這是讓邏輯解碼運作的最低記錄層級。 讀取複本也能在此設定中運作。

注意

部署大量寫入密集主要工作負載的讀取複本時,複寫延遲時間可能會繼續成長,且可能無法跟上主要工作負載。 這也可能會增加主要伺服器的儲存體使用量,因為 WAL 檔案會在複本收到這些檔案後才刪除。

Azure CLI

您可以使用 Azure CLI 來建立和管理讀取複本。

必要條件

準備主要伺服器

  1. 檢查主要伺服器的 azure.replication_support 值。 值應該至少是 REPLICA,如此讀取複本才能運作。

    az postgres server configuration show --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support
    
  2. 如果 azure.replication_support 不是至少 REPLICA,請加以設定。

    az postgres server configuration set --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support --value REPLICA
    
  3. 重新啟動伺服器以套用變更。

    az postgres server restart --name mydemoserver --resource-group myresourcegroup
    

建立讀取複本

az postgres server replica create 命令需要下列參數:

設定 範例值 描述
資源群組 myresourcegroup 複本伺服器會建立於其中的資源群組。
NAME mydemoserver-replica 所建立的新複本伺服器名稱。
source-server mydemoserver 要從中複寫的現有主要伺服器的名稱或資源識別碼。 如果您想要複本和主要伺服器的資源群組不同,請使用資源識別碼。

在下方 CLI 範例中,複本會建立在與主要伺服器相同的區域中。

az postgres server replica create --name mydemoserver-replica --source-server mydemoserver --resource-group myresourcegroup

若要建立跨區域讀取複本,請使用 --location 參數。 下方 CLI 範例會在美國西部建立複本。

az postgres server replica create --name mydemoserver-replica --source-server mydemoserver --resource-group myresourcegroup --location westus

注意

若要深入瞭解您可以在哪些區域中建立複本,請造訪參閱複本概念文章

如果在一般用途或記憶體最佳化的主要伺服器上,您尚未將 azure.replication_support 參數設定為 並重新啟動伺服器,則您會收到錯誤。 建立複本之前,請完成這兩個步驟。

重要

請參閱讀取複本概觀的考量章節

更新主要伺服器設定為新的值前,請更新複本設定為相等或更大的值。 此動作可協助複本與主要伺服器的變更保持一致。

列出複本

您可以使用 az postgres server replica list 命令來檢視主要伺服器的複本清單。

az postgres server replica list --server-name mydemoserver --resource-group myresourcegroup 

停止複寫至複本伺服器

您可以使用 az postgres server replica stop 命令,停止主要伺服器與讀取複本之間的複寫。

停止主要伺服器和讀取複本的複寫之後,即無法再復原。 讀取複本會變成支援讀取和寫入的獨立伺服器。 獨立伺服器無法再次設定為複本。

az postgres server replica stop --name mydemoserver-replica --resource-group myresourcegroup 

刪除主要或複本伺服器

若要刪除主要或複本伺服器,請使用 az postgres server delete 命令。

刪除主要伺服器時,所有讀取複本上的複寫都會停止。 讀取複本會變成獨立伺服器,進而支援讀取和寫入。

az postgres server delete --name myserver --resource-group myresourcegroup

REST API

您可以使用 Azure REST API 來建立和管理讀取複本。

準備主要伺服器

  1. 檢查主要伺服器的 azure.replication_support 值。 值應該至少是 REPLICA,如此讀取複本才能運作。

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
  2. 如果 azure.replication_support 不是至少 REPLICA,請加以設定。

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
    {
     "properties": {
     "value": "replica"
     }
    }
    
  3. 重新啟動伺服器以套用變更。

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/restart?api-version=2017-12-01
    

建立讀取複本

您可以使用建立 API 來建立讀取複本:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{replicaName}?api-version=2017-12-01
{
  "location": "southeastasia",
  "properties": {
    "createMode": "Replica",
    "sourceServerId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}"
  }
}

注意

若要深入瞭解您可以在哪些區域中建立複本,請造訪參閱複本概念文章

如果在一般用途或記憶體最佳化的主要伺服器上,您尚未將 azure.replication_support 參數設定為 並重新啟動伺服器,則您會收到錯誤。 建立複本之前,請完成這兩個步驟。

複本是使用與主要伺服器相同的計算和儲存體設定所建立。 建立複本之後,以下設定可以個別地從主要伺服器進行變更:計算世代、虛擬核心、儲存體及備份保留期間。 定價層也可以個別變更,但不能變更為基本層,或從基本層變更為別的層。

重要

更新主要伺服器設定為新的值前,請更新複本設定為相等或更大的值。 此動作可協助複本與主要伺服器的變更保持一致。

列出複本

您可以使用複本清單 API 檢視來源伺服器的複本清單:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/Replicas?api-version=2017-12-01

停止複寫至複本伺服器

您可以使用更新 API 停止來源伺服器與讀取複本之間的複寫。

停止主要伺服器和讀取複本的複寫之後,即無法再復原。 讀取複本會變成支援讀取和寫入的獨立伺服器。 獨立伺服器無法再次設定為複本。

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{replicaServerName}?api-version=2017-12-01
{
  "properties": {
    "replicationRole":"None"  
   }
}

刪除主要或複本伺服器

若要刪除來源或複本伺服器,請使用刪除 API

刪除主要伺服器時,所有讀取複本上的複寫都會停止。 讀取複本會變成獨立伺服器,進而支援讀取和寫入。

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}?api-version=2017-12-01

下一步