正常情况下都是在主Server上执行的,此时主Server上DB仍然可以正常访问。
在master 数据库,下执行以下命令
Alter database Test_Mirror_0519 Set Partner failover
注:Test_Mirror_0519为数据库名称
测试验证环境为,关闭了主服务器中的SQL Server 服务,在副本上执行以下命令:
Alter database Test_Mirror_0519 SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
注:只有在主副本坏掉了才可以。但不能手动关闭主副本的PARTNER 关系,否则,无法执行Mirror命令了。
测试时,我们是关闭主Server 的SQL Server 服务,关闭后,Mirror 服务器上Mirror库的状态如下:
然后再强制执行上述切换命令,此时数据库已经是可读写了
但是,当我们重启原主Server上的SQL Server 服务后,切换后的Mirror镜像的同步状态变成了 挂起 状态
注意:此时数据库仍是可读写,此时的挂起状态,是指的镜像同步关系
查看主Server上数据库在切换前后状态的变化,关闭SQL Server 服务前
切换后,重启SQL Server 服务
为了消除 挂起 这两个字,可以在主Server或者Mirror Server 执行以下命令:
Alter database Test_Mirror_0519 Set Partner off
例如 在 Mirror上执行后,切换后的新主Server 、原Mirror DB Server,其状态如下:
原主Server
操作模式 | 事务安全 | 传输模式 | 见证服务器 | 故障切换类型 |
---|---|---|---|---|
高可用 | Full | 同步 | 有 | 自动或手动切换 |
高保护 | Full | 同步 | 没有 | 只能手动切换 |
高性能 | Off | 异步 | 无需配置 | 只能强制切换 |
在以下高性能模式下,不能正常FailOver
告警提示如下:
TITLE: Database Properties
------------------------------
Manual failover is possible only when the operating mode is High safety (synchronous). To failover manually, change the operating mode and then click OK. You can optionally change the operating mode back to High performance (asynchronous) at the new principal server instance when failover is complete.
------------------------------
BUTTONS:
OK
------------------------------
解决方案
由高性能模式调整为安全模式,执行代码如下:
USE [master]
GO
ALTER DATABASE [Your_DB_Name] SET SAFETY FULL
GO
调整后如下:
正常切换后,MirrorDB变成主DB;主DB变成Mirror数据库。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。