如何使用 Azure CLI 和 REST API 在適用於 MySQL 的 Azure 資料庫中建立與管理讀取複本
適用於: 適用於 MySQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 MySQL 的 Azure 資料庫單一伺服器位於淘汰路徑上。 強烈建議您升級至適用於 MySQL 的 Azure 資料庫彈性伺服器。 如需移轉至適用於 MySQL 的 Azure 資料庫彈性伺服器的詳細資訊,請參閱適用於 MySQL 的 Azure 資料庫單一伺服器會發生什麼事?
在本文中,您將了解如何使用 Azure CLI 和 REST API 在適用於 MySQL 的 Azure 資料庫服務中建立與管理讀取複本。 若要深入了解讀取複本,請參閱概觀。
Azure CLI
您可以使用 Azure CLI 來建立和管理讀取複本。
必要條件
- 安裝 Azure CLI 2.0
- 適用於 MySQL 的 Azure 資料庫伺服器,將作為來源伺服器。
重要
讀取複本功能僅供「適用於 MySQL 的 Azure 資料庫」伺服器用於一般用途或記憶體最佳化定價層。 請確定來源伺服器處於這些定價層中。
建立讀取複本
重要
如果您的來源伺服器沒有現有的複本伺服器,來源伺服器可能需要重新啟動,才能根據使用的儲存體 (v1/v2) 來準備複寫。 請考量重新啟動伺服器,並在離峰時段執行此作業。 如需詳細資訊,請參閱來源伺服器重新啟動。
如果在主要伺服器上啟用 GTID (gtid_mode
= ON),新建立的複本也會啟用 GTID,並使用 GTID 形式的複寫。 若要深入了解,請參閱全域交易識別碼 (GTID)
使用下列命令可以建立讀取複本伺服器︰
az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup
az mysql server replica create
命令需要下列參數:
設定 | 範例值 | 描述 |
---|---|---|
資源群組 | myresourcegroup | 複本伺服器會建立於其中的資源群組。 |
NAME | mydemoreplicaserver | 所建立的新複本伺服器名稱。 |
source-server | mydemoserver | 要從中複寫的現有主要伺服器的名稱或識別碼。 |
若要建立跨區域讀取複本,請使用 --location
參數。 下方 CLI 範例會在美國西部建立複本。
az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup --location westus
注意
若要深入瞭解您可以在哪些區域中建立複本,請造訪參閱複本概念文章。
注意
- 命令
az mysql server replica create
具有--sku-name
引數,可讓您在使用 Azure CLI 建立複本時指定 SKU ({pricing_tier}_{compute generation}_{vCores}
)。 - 主要伺服器和讀取複本應該位於相同的定價層 (一般用途或記憶體最佳化)。
- 複本伺服器設定在建立後可以變更。 建議複本伺服器設定的值應保持等於或大於來源伺服器,以確保複本伺服器與主要伺服器保持一致。
列出來源伺服器的複本
若要檢視指定來源伺服器的所有複本,請執行下列命令:
az mysql server replica list --server-name mydemoserver --resource-group myresourcegroup
az mysql server replica list
命令需要下列參數:
設定 | 範例值 | 描述 |
---|---|---|
資源群組 | myresourcegroup | 複本伺服器會建立於其中的資源群組。 |
server-name | mydemoserver | 來源伺服器的名稱或識別碼。 |
停止複寫至複本伺服器
重要
停止複寫至伺服器是無法復原的。 一旦來源與複本伺服器之間的複寫停止,便無法復原。 複本伺服器會變成獨立伺服器,進而支援讀取和寫入。 此伺服器無法再次設定為複本伺服器。
使用下列命令,可以停止複寫至讀取複本伺服器︰
az mysql server replica stop --name mydemoreplicaserver --resource-group myresourcegroup
az mysql server replica stop
命令需要下列參數:
設定 | 範例值 | 描述 |
---|---|---|
資源群組 | myresourcegroup | 複本伺服器所在的資源群組。 |
NAME | mydemoreplicaserver | 要停止複寫的複本伺服器名稱。 |
刪除複本伺服器
執行 az mysql server delete 命令,即可刪除讀取複本伺服器。
az mysql server delete --resource-group myresourcegroup --name mydemoreplicaserver
刪除來源伺服器
重要
刪除來源伺服器會停止對所有複本伺服器複寫,並刪除來源伺服器本身。 複本伺服器會變成獨立伺服器,進而支援讀取和寫入。
若要刪除來源伺服器,您可以執行 az mysql server delete 命令。
az mysql server delete --resource-group myresourcegroup --name mydemoserver
REST API
您可以使用 Azure REST API 來建立和管理讀取複本。
建立讀取複本
您可以使用建立 API 來建立讀取複本:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{replicaName}?api-version=2017-12-01
{
"location": "southeastasia",
"properties": {
"createMode": "Replica",
"sourceServerId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{masterServerName}"
}
}
注意
若要深入瞭解您可以在哪些區域中建立複本,請造訪參閱複本概念文章。
複本是使用與主要伺服器相同的計算和儲存體設定所建立。 建立複本之後,以下設定可以個別從來源伺服器進行變更:計算世代、虛擬核心、儲存體及備份保留期間。 定價層也可以個別變更,但不能變更為基本層,或從基本層變更為別的層。
重要
將來源伺服器設定更新為新的值之前,請將複本設定更新為等於或更大的值。 此動作可確保複本可以跟上主要伺服器上所做的變更。
列出複本
您可以使用複本清單 API 檢視來源伺服器的複本清單:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{masterServerName}/Replicas?api-version=2017-12-01
停止複寫至複本伺服器
您可以使用更新 API 停止來源伺服器與讀取複本之間的複寫。
停止來源伺服器和讀取複本的複寫之後,即無法再復原。 讀取複本會變成支援讀取和寫入的獨立伺服器。 獨立伺服器無法再次設定為複本。
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{masterServerName}?api-version=2017-12-01
{
"properties": {
"replicationRole":"None"
}
}
刪除來源或複本伺服器
若要刪除來源或複本伺服器,請使用刪除 API:
刪除來源伺服器時,所有讀取複本上的複寫都會停止。 讀取複本會變成獨立伺服器,進而支援讀取和寫入。
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}?api-version=2017-12-01
已知問題
有兩代儲存體用於常規用途和記憶體最佳化層的伺服器,一般用途儲存體 v1 (支援最多 4 TB) 和一般用途儲存體 v2 (支援最多 16 TB 儲存體)。 來源伺服器和複本伺服器應該具有相同的儲存體類型。 由於一般用途儲存體 v2 不適用於所有區域,因此當您搭配 CLI 或 REST API 使用位置來建立讀取複本時,請務必選擇正確的複本區域。 如何識別來源伺服器的儲存體類型,請參閱連結如何判斷我的伺服器在哪一種儲存體類型上執行。
如果您選擇無法為來源伺服器建立讀取複本的區域,您將會遇到部署會繼續執行的問題,如下圖所示,然後將會逾時,並出現「資源佈建作業未在允許的逾時期間內完成」錯誤。
az mysql server replica create -n <replica-servername> -g <resource group> --location <replica-region> -s <source-servername>
/ Running . .
下一步
- 深入了解讀取複本