设置:
基本高可用性
2 个副本(1 个主副本,1 个辅助副本)。
DB01 => 初始初级。
DB02 => 初始二级
两者同步提交
两者都处于同步状态
没有配置监听器
集群类型 无
当我们使用 services.msc(模拟友好的服务器崩溃)停止 DB01(初始和当前主)SQL 服务,然后使用以下命令在 DB02(初始和当前辅助)上启动强制故障转移时:
ALTER AVAILABILITY GROUP [TestHA] FORCE_FAILOVER_ALLOW_DATA_LOSS;
辅助数据库上线,这是我们想要的。
但是,当使用 services.msc 再次启动 DB01 SQL Server 服务时,DB01 db 再次承担主要角色。
所以目前有 2 个实例可读/可写且不同步。我们期望初始主节点会检测到辅助节点已担任主要角色并承担次要角色,或者至少无法访问,因此应用程序无法处理旧数据。
相同的过程,但使用已弃用的镜像设置,确实会以这种方式运行。
由于这是一个无集群(读取规模)可用性组,因此不会自动协调每个节点所处的角色 - 该过程完全是手动的。
这就是为什么以前的主节点重新成为主节点的原因 - 没有任何东西告诉它改变它的角色。
您需要按照此处列出的说明进行操作:
故障转移读取规模可用性组上的主副本 - 强制手动故障转移导致数据丢失
最后,您可以手动将以前的主服务器添加为辅助服务器: