当前位置: 首页 > news >正文

SQL ServerAlways On 可用性组配置失败

问题现象
配置 Always On 可用性组时,报错 “无法将数据库加入可用性组”(错误 41158),或提示 “WSFC 群集资源无法联机”(错误 19471)。


快速诊断
  1. 验证 WSFC 群集状态

    # 检查群集节点状态(需在故障转移群集管理器中运行)
    Get-ClusterNode | Select-Object Name, State
    # 检查群集网络通信
    Test-Cluster -Node "Node1", "Node2" -Include "Network"
    • 正常状态:所有节点状态为 Up,网络延迟 < 1ms。

  2. 检查数据库同步条件

    -- 确保数据库处于完整恢复模式且已备份
    SELECT name, recovery_model_desc, log_reuse_wait_desc 
    FROM sys.databases 
    WHERE name = 'MyDB';
  3. 排查端点配置

    -- 检查数据库镜像端点状态
    SELECT name, role_desc, state_desc 
    FROM sys.database_mirroring_endpoints;

解决方案
步骤 1:修复 WSFC 群集配置
  1. 重新验证群集配置

    # 运行群集验证工具
    Test-Cluster -Node Node1, Node2 -Include "Storage", "Inventory", "Network"
    • 修复所有验证报告中标记的警告或错误(如存储路径权限、网络隔离)。

  2. 重启群集服务

    Stop-Cluster -Cluster SQLCluster -Force
    Start-Cluster -Cluster SQLCluster
步骤 2:配置 Always On 可用性组
  1. 启用 Always On 功能

    -- 启用 Always On 可用性组
    EXEC sys.sp_configure 'hadr enabled', 1;
    RECONFIGURE;
    • 重启 SQL Server 实例以生效。

  2. 创建可用性组端点

    CREATE ENDPOINT HadrEndpoint 
    STATE = STARTED
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (ROLE = ALL);
  3. 初始化可用性组

    -- 通过向导或脚本创建可用性组
    CREATE AVAILABILITY GROUP AG_MyDB
    WITH (
        AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
        FAILURE_CONDITION_LEVEL = 3
    )
    FOR DATABASE MyDB
    REPLICA ON 
        'Node1' WITH (ENDPOINT_URL = 'TCP://Node1:5022', FAILOVER_MODE = AUTOMATIC),
        'Node2' WITH (ENDPOINT_URL = 'TCP://Node2:5022', FAILOVER_MODE = AUTOMATIC);
步骤 3:同步数据库并验证
  1. 备份与还原数据库

    -- 主节点执行完整备份
    BACKUP DATABASE MyDB TO DISK = '\\SharedPath\MyDB.bak' WITH INIT;
    -- 辅助节点还原(需指定 NORECOVERY)
    RESTORE DATABASE MyDB FROM DISK = '\\SharedPath\MyDB.bak' WITH NORECOVERY;
  2. 将数据库加入可用性组

    ALTER AVAILABILITY GROUP AG_MyDB ADD DATABASE MyDB;

验证与日志分析
  1. 检查可用性组状态

    SELECT 
        ag.name AS AGName,
        ar.replica_server_name AS Replica,
        drs.database_id,
        drs.synchronization_state_desc AS SyncState
    FROM sys.availability_groups ag
    JOIN sys.availability_replicas ar ON ag.group_id = ar.group_id
    JOIN sys.dm_hadr_database_replica_states drs ON ar.replica_id = drs.replica_id;
  2. 分析错误日志

    • 群集日志路径

      C:\Windows\Cluster\Reports\ValidationReport.html
    • SQL Server 错误日志

      C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Log\ERRORLOG
    • 搜索关键词 HadrTransportManager::HandleSecEnvError(安全通信失败)或 Failed to join the database


扩展场景:跨子网延迟问题
  • 错误示例The connection timeout period elapsed

  • 解决方案

    1. 调整可用性组超时设置

      ALTER AVAILABILITY GROUP AG_MyDB 
      SET (HEALTH_CHECK_TIMEOUT = 60000);  -- 单位:毫秒
    2. 配置多子网侦听器

      ALTER AVAILABILITY GROUP AG_MyDB 
      MODIFY LISTENER 'AG_Listener' (
          ADD IP ('192.168.1.100/24', '255.255.255.0'),
          ADD IP ('10.0.0.100/24', '255.255.255.0')
      );

安全加固建议
  1. 启用传输加密

    ALTER ENDPOINT HadrEndpoint 
    FOR DATABASE_MIRRORING (AUTHENTICATION = CERTIFICATE DBMirrorCert);
  2. 限制端点访问

    New-NetFirewallRule -DisplayName "HADR-Port" -Direction Inbound -Protocol TCP -LocalPort 5022 -RemoteAddress 192.168.1.0/24 -Action Allow

通过以上步骤,可解决 Always On 可用性组配置中的典型问题。若部署在云环境(如 Azure VM),需确保负载均衡器规则允许 HADR 端口(5022)通信,并配置适当的探测机制。生产环境中建议定期执行故障转移演练并监控同步延迟。

http://www.dtcms.com/a/113399.html

相关文章:

  • [ctfshow web入门] web3
  • vue2项目中,多个固定的请求域名 和 通过url动态获取到的ip域名 封装 axios
  • [leetcode]1786. 从第一个节点出发到最后一个节点的受限路径数(Dijkstra+记忆化搜索/dp)
  • 私有部署stable-diffusion-webui
  • 44. 评论日记
  • STP学习
  • 【LeetCode】大厂面试算法真题回忆(48)--静态扫描最优成本
  • 为 IDEA 设置管理员权限
  • MYSQL 存储引擎 和 日志
  • 论文阅读笔记:Denoising Diffusion Implicit Models (5)
  • 英伟达Blackwell架构深度拆解:新一代GPU如何突破算力瓶颈?
  • DHCP Snooping 主要作用
  • 【Redis】通用命令
  • 聊聊Spring AI的ChromaVectorStore
  • #SVA语法滴水穿石# (007)关于 $past 的用法
  • P10587 「ALFR Round 2」C 小 Y 的数 Solution
  • Python 如何高效实现 PDF 内容差异对比
  • 房地产之后:探寻可持续扩张的产业与 GDP 新思
  • 在线编辑数学公式
  • NDK开发:音视频处理基础
  • 解释观察者模式,如何实现观察者模式?
  • 单域名 vs 通配符:如何选择最适合你的 SSL 证书?
  • API 类别 - 方法重载
  • JVM虚拟机篇(五):深入理解Java类加载器与类加载机制
  • 纯css实现环形进度条
  • React 零基础学习计划(10节课小项目)
  • STM32定时器通道1-4(CH1-CH4)的引脚映射关系
  • 信创国产化项目验收的标准与流程
  • HBase的安装与简单操作
  • 14.1linux中platform设备驱动实验(知识点)_csdn