文档首页/ 云数据库 RDS/ 故障排除/ RDS for SQL Server/ RDS for SQL Server规格变更或主备切换失败
更新时间:2022-10-26 GMT+08:00

RDS for SQL Server规格变更或主备切换失败

场景描述

  • 通过管理控制台下发规格变更时,右上角报错“当前实例数据库主备同步关系异常,无法执行该操作”。
  • 通过管理控制台进行主备切换时,右上角报错“当前实例数据库主备同步关系异常,无法主备倒换”。

故障分析

可能是由于复制关系异常导致无法下发规格变更,可通过以下两种方式分析,任选其一即可。

  • 方式1:通过查看监控指标(数据同步延迟)
    1. 登录管理控制台。
    2. 在“实例管理”页面,选择目标实例,单击操作列中的“查看监控指标”,跳转到云监控服务页面。

      您也可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“查看监控指标”,跳转到云监控服务页面。

    3. 在云监控页面,可以查看实例的“数据同步延迟”指标,当出现数值过大例如99999表示复制关系异常。
  • 方式2:通过SSMS(SQL Server Managerment Studio)查看

    如下图1所示,正常建立复制关系的数据库状态会显示“Principal, Synchronized”例如 rdsadmin。

    db1数据库没有复制状态,表示没有建立复制关系,则不能进行主备切换。也可能显示“Principal,Disconnected”表示复制关系中断,也不能进行主备切换。

    如果是2017企业版,则数据库复制关系正常的会只显示“Synchronized”。

    图1 数据库复制关系

解决方案

当前存在数据库没有建立复制关系时如上图的db1数据库,需要检查数据库属性。

登录SSMS(SQL Server Managerment Studio)客户端,选择目标数据库,右键属性,查看Recovery model和Auto Close属性值。

图2 查看属性
  • 如果Recovery model是Simple模式,则不会建立复制关系,需要改成full模式,通过SSMS设置,或者执行如下SQL语句修改
    ALTER DATABASE [database_name] SET RECOVERY FULL WITH NO_WAIT

    [database_name]:填写数据库名.

    示例:

    ALTER DATABASE [db1] SET RECOVERY FULL WITH NO_WAIT
  • 如果Auto Close属性是True,也不会建立复制关系,需要关闭Auto Close属性,通过SSMS设置,或者执行如下SQL语句修改
    ALTER DATABASE [db1] SET AUTO_CLOSE OFF WITH NO_WAIT

修改完成后,等待建立复制关系,一般几分钟就会自动开始建立复制关系,建立时间取决于数据库的大小。

等待复制关系建立完成后即可重新执行规格变更或主备切换操作。