You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

强制故障转移后将旧主节点作为辅助节点重新加入SQL Server Always On可用性组

解决方案:旧主节点重新加入新主节点(允许数据丢失)

针对三节点SQL Server Always On可用性组中旧主节点node-1因网络孤立、独立写入后无法同步的场景,在可接受node-1数据丢失的前提下,可通过以下步骤无需删除数据库重新加入新主节点node-2:

步骤1:在node-1上清除本地AG关联并重置HADR状态

  • 先将node-1上的可用性组脱机:
    ALTER AVAILABILITY GROUP [AG_NAME] OFFLINE;
    
  • 移除node-1上该可用性组的本地实例关联(仅清除AG元数据,不删除数据库文件):
    ALTER AVAILABILITY GROUP [AG_NAME] REMOVE ON INSTANCE 'node-1';
    
  • 重置数据库的HADR状态,脱离原有AG绑定:
    ALTER DATABASE [AG_DB_NAME] SET HADR OFF;
    

步骤2:将node-1重新添加至可用性组

  • 在新主节点node-2上执行命令,添加node-1为副本(根据实际环境调整端点、可用性模式等参数):
    ALTER AVAILABILITY GROUP [AG_NAME] ADD REPLICA ON 'node-1' WITH (
        ENDPOINT_URL = 'TCP://node-1:5022',
        AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, -- 可按需改为SYNCHRONOUS_COMMIT
        FAILOVER_MODE = MANUAL, -- 按需调整自动/手动故障转移
        BACKUP_PRIORITY = 50,
        SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)
    );
    
  • 回到node-1,执行加入可用性组的命令:
    ALTER AVAILABILITY GROUP [AG_NAME] JOIN;
    
  • 重新启用数据库的HADR关联,开始从node-2同步数据:
    ALTER DATABASE [AG_DB_NAME] SET HADR AVAILABILITY GROUP = [AG_NAME];
    

步骤3:验证同步状态

  • 在node-2上执行查询,确认同步状态:
    SELECT 
        ar.replica_server_name,
        dbs.database_name,
        drs.synchronization_state_desc,
        drs.last_hardened_lsn
    FROM 
        sys.dm_hadr_database_replica_states drs
    JOIN 
        sys.availability_databases_cluster dbs ON drs.group_database_id = dbs.group_database_id
    JOIN 
        sys.availability_replicas ar ON drs.replica_id = ar.replica_id
    WHERE 
        dbs.database_name = 'AG_DB_NAME';
    
  • 等待synchronization_state_desc变为SYNCHRONIZING或SYNCHRONIZED,确认数据同步正常。

注意事项

  • 此操作会丢弃node-1上网络故障期间的独立写入数据,需提前确认业务可接受该损失。
  • 操作前确保node-1与node-2之间网络连通、SQL端点配置正常、服务账户权限充足。
  • 若数据库文件存在损坏,需先修复后再执行上述步骤。

内容的提问来源于stack exchange,提问作者Neaj Morshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 03:16:27