SQL Server 14.0.1000.169双向主从配置:是否需多可用性组及集群?
你的双向主备场景配置方案解答
嘿,这个双向主备的需求我碰到过不少,咱们直接把关键点理清楚:
1. 故障转移集群(WSFC):只需要1个就够了
Windows故障转移集群是SQL Server可用性组的底层依赖,你的两台节点A和B已经在同一个WSFC里了,所有的可用性组都可以共享这个集群资源。完全不需要再创建第二个集群,重复建集群反而会带来冲突和管理复杂度。
2. 可用性组(AG):必须配置2个独立的
每个可用性组对应一组数据库的主备关系:
- 第一个AG:包含DB1,节点A作为主副本,节点B作为辅助副本(你已经搞定这个了)
- 第二个AG:包含DB2,节点B作为主副本,节点A作为辅助副本
两个AG是相互独立的,各自管理自己数据库的故障转移逻辑,这样DB1和DB2的主备切换不会互相影响,正好满足你双向主备的需求。创建第二个AG的时候,注意在节点B上发起配置,指定DB2为主库,添加节点A作为辅助副本,复用之前配置好的数据库镜像端点就行(不用重新建端点)。
3. 监听器:建议配置2个,对应每个AG
监听器的作用是让应用能自动连接到AG的主库,不用手动修改连接字符串。针对你的场景:
- 给第一个AG(DB1)配一个监听器,比如
AG1-Listener,应用连接这个监听器访问DB1 - 给第二个AG(DB2)配一个监听器,比如
AG2-Listener,应用连接这个监听器访问DB2
当然,如果你能通过不同的连接字符串区分两个数据库,也可以不用两个监听器,但分开配置会更清晰,后续维护和故障排查也更方便。
额外注意事项
- 确保两台节点的SQL Server服务账号有足够的权限访问WSFC资源和对方的数据库端点
- 创建第二个AG时,DB2需要先做完整备份+日志备份,然后在节点A上还原(NORECOVERY模式),才能加入AG作为辅助副本
- 测试两个AG的故障转移:手动切换DB1的AG到节点B,确认DB1在B上变成主库;切换DB2的AG到节点A,确认DB2在A上变成主库,确保双向切换都正常
内容的提问来源于stack exchange,提问作者Tomasz
相关产品推荐
相关产品推荐

