如何使用 Azure CLI 和 REST API 在 Azure Database for MySQL 中创建和管理只读副本
适用于: Azure Database for MySQL - 单一服务器
重要
Azure Database for MySQL 单一服务器即将停用。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关如何迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅 Azure Database for MySQL 单一服务器发生了什么情况?
本文介绍如何使用 Azure CLI 和 REST API 在 Azure Database for MySQL 服务中创建和管理只读副本。 若要详细了解只读副本,请参阅概述。
Azure CLI
可以使用 Azure CLI 创建和管理只读副本。
先决条件
- 安装 Azure CLI 2.0
- 将用作源服务器的 Azure Database for MySQL 服务器。
重要
只读副本功能仅适用于“常规用途”或“内存优化”定价层中的 Azure Database for MySQL 服务器。 请确保源服务器位于其中一个定价层中。
创建只读副本
重要
如果源服务器没有现有的副本服务器,则源服务器可能需要重启才能为复制做好自身准备,具体取决于使用的存储 (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
命令需要以下参数:
设置 | 示例值 | 说明 |
---|---|---|
resource-group | myresourcegroup | 要在其中创建副本服务器的资源组。 |
name | mydemoreplicaserver | 所创建的新副本服务器的名称。 |
source-server | mydemoserver | 要从中进行复制的现有源服务器的名称或 ID。 |
若要创建跨区域只读副本,请使用 --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
命令需要以下参数:
设置 | 示例值 | 说明 |
---|---|---|
resource-group | myresourcegroup | 要在其中创建副本服务器的资源组。 |
server-name | mydemoserver | 源服务器的名称或 ID。 |
停止复制到副本服务器
重要
停止复制到服务器操作不可逆。 一旦源服务器和副本服务器之间的复制停止,将无法撤消它。 然后,副本服务器将成为独立服务器,并且现在支持读取和写入。 此服务器不能再次成为副本服务器。
可以使用以下命令停止复制到只读副本服务器:
az mysql server replica stop --name mydemoreplicaserver --resource-group myresourcegroup
az mysql server replica stop
命令需要以下参数:
设置 | 示例值 | 说明 |
---|---|---|
resource-group | 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}"
}
}
注意
若要详细了解可以在哪些区域中创建副本,请访问只读副本概念文章。
使用与主服务器相同的计算和存储设置创建副本。 创建副本后,可以独立于源服务器更改多项设置:计算代系、vCore 数、存储和备份保留期。 定价层也可以独立更改,但“基本”层除外。
重要
将源服务器设置更新为新值之前,请将副本设置更新为一个相等或更大的值。 此操作可帮助副本与主服务器发生的任何更改保持同步。
列出副本
可以使用副本列表 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 配合使用来创建只读副本时选择正确的副本区域。 有关如何确定源服务器的存储类型,请参阅链接如何确定服务器上运行的存储类型。
如果选择无法为源服务器创建只读副本的区域,则会遇到这样的问题:部署将持续运行(如下图所示),然后超时并收到错误“资源预配操作未在允许的超时时间内完成。”
后续步骤
- 详细了解只读副本