從 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 來建立和管理讀取複本。
必要條件
準備主伺服器
檢查主伺服器
azure.replication_support
的值。 讀取複本應該至少為 REPLICA 才能運作。az postgres server configuration show --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support
如果
azure.replication_support
不是至少 REPLICA,請加以設定。az postgres server configuration set --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support --value REPLICA
重新啟動伺服器以套用變更。
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
參數設定為 一般用途或記憶體優化主伺服器上的 REPLICA ,並重新啟動伺服器,您會收到錯誤。 在建立複本之前,請先完成這兩個步驟。
列出複本
您可以使用 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 來建立和管理讀取複本。
準備主伺服器
檢查主伺服器
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
如果
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" } }
重新啟動伺服器 以套用變更。
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
參數設定為 一般用途或記憶體優化主伺服器上的 REPLICA ,並重新啟動伺服器,您會收到錯誤。 在建立複本之前,請先完成這兩個步驟。
復本是使用與主要複本相同的計算和記憶體設定所建立。 建立複本之後,可以從主伺服器獨立變更數個設定:計算產生、虛擬核心、記憶體和備份保留期間。 定價層也可以個別變更,但不能變更為基本層,或從基本層變更為別的層。
重要
在主伺服器設定更新為新值之前,請將複本設定更新為等於或更大的值。 此動作可協助複本跟上對主要複本所做的任何變更。
列出複本
您可以使用複本清單 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
下一步
- 深入瞭解 適用於 PostgreSQL 的 Azure 資料庫 中的讀取複本。
- 了解如何在 Azure 入口網站中建立及管理讀取複本。