SQL Server 镜像数据库切换及同步状态变化

2021-03-21 18:43:12 浏览数 (1)

一  主从(Mirror)正常情况故障转移

正常情况下都是在主Server上执行的,此时主Server上DB仍然可以正常访问。

1.1 通过图形界面转移
(主Server DB上执行,不是MirrorDB)
Step 1 选择需要故障转移的数据库,进入的镜像窗口
Step 2 选中【故障转移】
Step 3 点击 【是】
 Step 4 检查OK

1.2 通过SQL命令转移

 在master 数据库,下执行以下命令

代码语言:javascript复制
Alter database Test_Mirror_0519 Set Partner failover 

注:Test_Mirror_0519为数据库名称

二 主数据库不能连接的时候

测试验证环境为,关闭了主服务器中的SQL Server 服务,在副本上执行以下命令:

代码语言:javascript复制
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 执行以下命令:

代码语言:javascript复制
Alter database Test_Mirror_0519 Set Partner off

例如 在 Mirror上执行后,切换后的新主Server 、原Mirror DB Server,其状态如下:

原主Server

三.切换时,注意镜像操作模式

操作模式

事务安全

传输模式

见证服务器

故障切换类型

高可用

Full

同步

自动或手动切换

高保护

Full

同步

没有

只能手动切换

高性能

Off

异步

无需配置

只能强制切换

在以下高性能模式下,不能正常FailOver

告警提示如下:

代码语言:javascript复制
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
------------------------------

 解决方案

由高性能模式调整为安全模式,执行代码如下:

代码语言:javascript复制
USE [master]
GO
ALTER DATABASE [Your_DB_Name] SET SAFETY FULL
GO

 调整后如下:

 正常切换后,MirrorDB变成主DB;主DB变成Mirror数据库。

0 人点赞