RDS for SQL Server如何解除和重建复制关系
场景描述
主备实例对用户的数据库会自动建立复制关系,用户创建或迁移上云的数据库一般会在几分钟内开始建立复制关系,完成的时间取决于数据库的大小。
有一些场景可能需要解除复制关系执行配置,然后再重新建立复制关系,如下所示。
- 临时解除复制关系。在修改数据库名称、设置快照隔离级别、设置数据库属性等操作需要临时解除复制关系。不然会有类似如下报错:
图1 报错信息
- 较长时间解除复制关系(不推荐)。有些库对性能要求极高吞吐量极大,需要不建立复制关系下工作等。
故障分析
存在部分alter database操作需要先解除数据库的复制关系,然后才能执行成功。
解决方案
- 暂时解除复制关系
- 非2017企业版的实例
alter database [@DBName] set partner off
[@DBName]:指定需要解除复制关系的库名。
- 解除复制关系后的操作需要和该语句在一个批处理中执行,解除复制关系后,系统会尽快自动重建该库的复制关系,不需要手动执行SQL重建。
- 2017企业版的实例
执行存储过程将数据库移出可用性组。详细内容可参考将自定义数据库移出可用性组。
EXEC rdsadmin.dbo.rds_remove_database_from_ag '@DBName';
@DBName:需要移除的自定义数据库名称。
示例:
将数据库testDB_1从可用性组[AG-RDS-YUN]中移除。
EXEC rdsadmin.dbo.rds_remove_database_from_ag 'testDB_1';
- 非2017企业版的实例
- 解除复制关系并且要求不再自动建立(不推荐)
- 数据库auto close属性为True时不会建立复制关系,并且不会产生复制关系异常的告警。
需要将auto close属性关闭设置为False,才能重新自动建立复制关系。
alter database [db1] set auto_close off with no_wait