SQLServer AlwaysOn FCI与AG组合

本文介绍如何通过搭建AlwaysOn Failover Cluster Instance (FCI)与可用性组(AG)实现SQL Server的高可用性和异地容灾。具体步骤包括配置FCI, 安装并设置AG, 以及进行故障转移测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在搭建了  AlwaysOn FCI 后,MSSQL 拥有了实例界别的高可用了。但是数据访问仍然存储在单个节点中,异地容灾还无法高可用。


如下图,在搭建 AlwaysOn FCI与AG组合 前,先搭建 Failover Cluster Instance(FCI):



若此时磁盘损坏,或者双节点都宕机,这就需要异地的灾备中心上线了。为了保证异地的高可用,在本地高可用 FCI 上,搭建 alwayson 可用性组。

架构如下图:


注意:在配置可用性组时,所有节点都加入同一个群集中。使用的是 FCI 的虚拟IP。


异地节点的计算机先加入域,配置网络,配置防火墙,安装故障转移工具,安装数据库实例,设置账号等。

在现有的群集中,添加节点:



验证添加完成后,节点 “server112” 则添加到群集中。

接下来激活 alwayson 可用性组,在FCI的主节点实例中激活,新的节点也要激活,都需要重启一次实例。


右键群集中 SQL server 应用属性,在首先所有者中,不需选择新增的节点。因为此实例是故障转移实例,不必把AG的节点选中。


现在好了,这样像正常一样配置可用性组了!访问时使用的是 FCI 的虚拟IP连接到群集实例中。

先在FCI的主节点实例中备份数据库,还原到新增的节点 (如 server112),按正常方法配置AG,完成如下。


此时群集中的实例如下:


搭建完成!!

在开放上线前测试一遍,进行FCI间的故障转移,注意别转到AG节点112(当然也会报错)


在数据库内部,进行一次来回的 AG 故障转移:


确定没什么问题,那就上线吧!

此外,还可以在AG 的单节点中再配置 FCI,当然AG只能在一个节点中读写,其他可设置只读。



参考:Adding SQL Server AlwaysOn Availability Groups to existing Failover Clusters



<think>嗯,我现在需要了解如何在SQL Server数据库上配置双机热备。首先,我得弄清楚什么是双机热备。好像是指两个服务器同时运行,一个主,一个备,当主服务器出问题时,备机可以立即接管,确保服务不中断对吧?那具体怎么操作呢? 我记得SQL Server有几种高可用性解决方案,比如故障转移群集、数据库镜像、Always On可用性组,还有日志传送。可能用户问的双机热备指的是其中一种方法。需要确认这些方法的区别适用场景。 首先,故障转移群集(Failover Cluster)需要Windows Server Failover Clustering(WSFC)的支持,共享存储,这样主节点备用节点共享同一个磁盘,当主节点故障时,备用节点接管存储。这可能适用于需要高可用性的场景,但需要共享存储,成本可能较高。 然后是数据库镜像(Database Mirroring),这个在SQL Server 2012之后可能被Always On取代了。它允许主数据库镜像数据库实时同步,分为高安全模式高性能模式,可能自动或手动故障转移。但需要端点配置,证书或者Windows身份验证。 Always On可用性组(Always On Availability Groups)是更现代的解决方案,允许一组数据库进行故障转移,支持读写分离,每个节点有独立存储,不需要共享磁盘。需要配置可用性组监听器,客户端通过监听器连接。这可能需要企业版,而标准版可能不支持。 还有日志传送(Log Shipping),定期备份主数据库的日志并还原到备用服务器,这种方式切换时间较长,可能不是实时的,属于温备而不是热备。 用户提到的双机热备可能更倾向于故障转移群集或Always On可用性组。需要确定用户的环境,比如SQL Server版本,Windows版本,是否允许共享存储等。 接下来,具体操作步骤。假设用户使用Always On可用性组,因为它是推荐的方法,支持自动故障转移,且不需要共享存储。步骤可能包括: 1. 确保两台服务器在同一Windows域中,并安装相同版本的SQL Server,启用Always On功能。 2. 配置Windows Server Failover Cluster,在两台服务器上安装故障转移群集功能,并创建群集。 3. 在SQL Server配置管理器中启用Always On可用性组。 4. 创建端点,配置数据库的完整恢复模式,进行完整备份日志备份。 5. 在SSMS中创建可用性组,添加数据库,配置副本,设置故障转移模式为自动或手动,调整备份首选项等。 6. 配置监听器,提供统一的连接字符串。 7. 测试故障转移,验证数据同步自动切换。 如果是故障转移群集,步骤可能不同,需要共享存储,安装群集服务,配置SQL Server实例为群集角色,但Always On更为灵活。 需要注意的是,配置过程中可能会遇到问题,比如网络问题,权限不足,端点无法通信,防火墙设置,或者数据库状态不符合要求(比如未处于完整恢复模式,没有进行过完整备份)。 另外,备份还原过程中必须使用NORECOVERY模式,以便后续日志备份应用。可用性组需要主副本辅助副本之间的数据同步,可能涉及端点认证,比如使用证书或域账户。 可能还需要配置见证服务器(第三个节点)以实现自动故障转移,避免脑裂问题。这需要第三个服务器或共享文件夹作为见证。 总之,具体步骤需要根据用户的实际环境需求来选择合适的高可用性方案,并按照官方文档逐步配置,同时进行充分的测试。</think>以下是SQL Server双机热备的常见实现方式及操作步骤(以**Always On可用性组**为例): --- ### 一、核心方案选择 1. **Always On可用性组**(推荐) - 支持自动/手动故障转移 - 数据库级别冗余,无需共享存储 - 需要SQL Server企业版(或标准版部分功能受限) 2. **故障转移群集(FCI)** - 实例级冗余,依赖共享存储(如SAN) - 切换速度快,但存储为单点故障 --- ### 二、Always On可用性组配置步骤 #### **前提条件** - 两台服务器加入**同一Windows域** - SQL Server版本一致且启用**Always On**功能 - 数据库恢复模式为**完整(Full)** - 开放防火墙端口(默认**5022**) --- #### **1. 配置Windows故障转移群集(WSFC)** ```powershell # 在两台服务器上安装故障转移群集功能 Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools # 创建群集(在任意一台服务器执行) New-Cluster -Name MyCluster -Node Server1,Server2 -StaticAddress 192.168.1.100 ``` --- #### **2. 配置SQL Server Always On** 1. **启用Always On功能** - 打开SQL Server配置管理器 → 右键实例 → 属性 → 启用“Always On可用性组” 2. **创建数据库备份** ```sql -- 主库执行 BACKUP DATABASE MyDB TO DISK = '\\shared\MyDB.bak' WITH FORMAT; BACKUP LOG MyDB TO DISK = '\\shared\MyDB.trn'; ``` --- #### **3. 创建可用性组** 1. **SSMS向导操作** - 右键“Always On高可用性” → 新建可用性组向导 - 添加副本:选择备机,设置**同步提交**(自动故障转移)或**异步提交** - 配置监听器:提供虚拟IP端口(客户端通过此连接) 2. **T-SQL命令(可选)** ```sql CREATE AVAILABILITY GROUP [AG1] WITH (AUTOMATED_BACKUP_PREFERENCE = PRIMARY) FOR DATABASE MyDB REPLICA ON 'Server1' WITH (ENDPOINT_URL = 'TCP://Server1:5022', FAILOVER_MODE = AUTOMATIC), 'Server2' WITH (ENDPOINT_URL = 'TCP://Server2:5022', FAILOVER_MODE = AUTOMATIC); ``` --- #### **4. 验证测试** 1. **手动故障转移测试** ```sql ALTER AVAILABILITY GROUP [AG1] FAILOVER; ``` 2. **监控状态** ```sql SELECT * FROM sys.dm_hadr_availability_replica_states; ``` --- ### 三、关键注意事项 - **网络延迟**:同步提交模式要求低延迟网络 - **备份策略**:建议在辅助副本执行备份以减轻主库压力 - **证书配置**:若跨域需配置证书认证 - **日志空间**:确保事务日志定期截断 --- ### 四、常见问题排查 - **端点无法通信**:检查防火墙、端口及端点状态 - **数据库未联机**:确认辅助库处于`NORECOVERY`模式 - **同步延迟**:监控`redo_queue_size``log_send_rate` --- 通过以上步骤可构建高可用SQL Server环境。实际部署前建议在测试环境验证,并参考微软官方文档调整细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值