如何将MP服务层(MP1或MP2)降级到MS服务层(MS1 - MS6)?
由于MP服务层采用不同于MS服务层的存储架构,目前MySQL Database on Azure暂不支持直接从MP降级至MS。如果您确实需要执行此类降级操作,可以通过首先创建从属实例,然后将其提升为主实例的方式实现。具体步骤如下所示(以MP1降级至MS6为例,其它服务层的降级操作与此类似)。
本例所涉及的各项资源名称如下表所示:
资源项目 | MP1 | MS6 |
资源组 | Default-MySQL-ChinaEast | Default-MySQL-ChinaEast |
服务器 | mysqldemoserver | mysqlmsserver |
位置 | ChinaEast | ChinaEast |
测试数据库 | replicadb | replicadb |
步骤1 等待MP自动创建完全备份
确保MP1实例至少存在一个完全备份,且备份的状态为“Ready”。根据设置的不同,有时需等待一天。
步骤2 创建MS从属实例
运行PowerShell命令,创建MS6从属实例(只读实例)。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName mysqlmsserver -ApiVersion 2015-09-01 -ResourceGroupName Default-MySql-ChinaEast -Location ChinaEast -SkuObject @{name='MS6'} -Properties @{replicationMode='AzureSlave'; creationSource=@{server='mysqldemoserver';region='chinaEast'}; version = '5.6';}
步骤3 暂停客户端对数据库的写操作
等待一段时间,使从属实例(MS6)与主实例(MP1)之间的延迟足够低(比如60秒以内),然后暂停客户端程序对MP1主实例的一切写操作。
步骤4 在MP主实例上创建测试数据库用作同步信号
在MP1主实例上创建replicadb数据库,并等待该测试数据库同步至MS6从属实例。此时两个实例上的数据完全同步。
步骤5 提升从属实例为主实例
将MS6从属实例提升为主实例。(参考:提升从属实例)
最后,您可以修改客户端程序的连接字符串(Connection String),使其指向新的MS6实例,然后删除MP1实例。
备注
某些情况下可能不方便对客户端程序的连接字符串进行修改。针对这种情况,我们同样给出了无需修改连接字符串的步骤供您参考。下面两个额外的步骤无需修改客户端程序的连接字符串,但可能造成上层应用的短暂宕机时间(通常为几分钟)。
步骤6 在经典管理门户中创建手动备份
创建MS6实例的手动即时备份。(参考:MySQL Database on Azure备份和恢复)
步骤7 将备份还原至名称与原MP实例相一致的MS实例
删除MP1实例,然后将步骤6中创建的手动即时备份还原至名称与原MP1一致的MS6新实例(本例中为mysqldemoserver)。
最后,删除MS6临时实例mysqlmsserver,并恢复客户端程序对该MS6实例的正常读写操作。