zoukankan      html  css  js  c++  java
  • Aways on故障系列之三:所有从数据库均无法同步

    服务器用的阿里云服务器,自己做的非域Aways On主从同步。

    故障描述:所有从数据库无法同步主数据库的数据,查看Aways On的服务器状态,所有服务器已离线。

    故障排查:

        1.查看同步状态,延时非常高。

    SELECT  availability_mode_desc ,
            role_desc ,
            replica_server_name ,
            last_redone_time ,
            GETDATE() now ,
            DATEDIFF(ms, last_redone_time, GETDATE()) diffMS
    FROM    ( ( sys.availability_groups AS ag
                JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id
              )
              JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id
            )
            JOIN sys.dm_hadr_database_replica_states dr_state ON ag.group_id = dr_state.group_id
                                                                 AND dr_state.replica_id = ar_state.replica_id;

        2.检查同步面板,所有服务器离线。

        3.检查数据库日志,发现问题:大致意思为证书过期。

    Database Mirroring login attempt failed with error: 'Connection handshake failed. The certificate used by this endpoint was not found: Certificate expired. Use DBCC CHECKDB in master database to verify the metadata integrity of the endpoints. State 85

        4.检查群集状态,正常。

        5.百度后发现是由于服务器aways on证书过期导致的。昨天对服务器进行了续费操作,因而推断去年的今天做了数据库非域Aways on,没有注意到证书的有效时间,而证书默认有效时间为1年,与证书过期相吻合。

    故障原因:非域Aways on同步对应的数据库证书过期。

    故障解决:

        1.在各服务器查询所有的证书,找到所有的过期证书。

    select * from master.sys.certificates

        2.删除所有的过期证书。

    DROP CERTIFICATE 证书名称

        如果证书名称中包含有特殊字符,例如-,需要采用下面的方法进行删除。

    declare @CompName varchar(255),@dySql varchar(1000)
    set @CompName='证书部分名称'
    set @dySql=CONCAT('drop CERTIFICATE ', QUOTENAME(@CompName + '-特殊字符后'))
    exec (@dySql);

        3.如果是删除当前服务器的证书,则会报错,删除失败,需要先删除端点,再删除证书。

        查看端点

    select * from master.sys.database_mirroring_endpoints

        删除端点

    DROP ENDPOINT Endpoint_Mirroring

        4.参考Aways on的搭建,重新生成证书并导入到对应的服务器中。

        5.参考Aways on的搭建,重新加入从数据库到Aways on中。

        6.讲过上述步骤后,主从同步正常。

  • 相关阅读:
    es6基础系列二:Number
    es6基础系列一:let和const
    linux常用命令
    input 事件与汉字输入法:使用compositionend事件解决
    正则表达式
    php 调试环境配置(mac)
    前端实习生:10个月的总结
    人生路:程序员、飞行员?
    科三流水账
    阻止pc端浏览器缩放js代码
  • 原文地址:https://www.cnblogs.com/maomao999/p/9855624.html
Copyright © 2011-2022 走看看