镜像监视器无法查看备机的状态

举报
LD的SQL路 发表于 2021/12/02 15:35:02 2021/12/02
【摘要】 最近刚刚搭建了一套基于windows server 2008 R2和sqlserver 2012 sp1的镜像环境,搭建过程还是比较顺利的,运行了几天,同步也正常,运行特别稳定。但是在某个周五的早上打开sqlserver企业管理器连接到数据库,打开镜像监视器,发现显示备机连接异常。第一反应就是是不是备机挂了或者是同步出现了问题呢,检查备机状态正常,接下来就是排查同步的情况了。可以借助sys....

最近刚刚搭建了一套基于windows server 2008 R2和sqlserver 2012 sp1的镜像环境,搭建过程还是比较顺利的,运行了几天,同步也正常,运行特别稳定。

但是在某个周五的早上打开sqlserver企业管理器连接到数据库,打开镜像监视器,发现显示备机连接异常。


第一反应就是是不是备机挂了或者是同步出现了问题呢,检查备机状态正常,接下来就是排查同步的情况了。

可以借助sys.database_mirroring

主要需要关注mirroring_state和mirroring_end_of_log_lsn这两个字段,通过对比主库和备库的mirroring_end_of_log_lsn可以查看主备的同步差距

mirroring_state表示镜像数据库的状态和数据库镜像会话的状态。

字段说明如下

0 = 已挂起

1 = 与其他伙伴断开

2 = 正在同步

3 = 挂起故障转移

4 = 已同步

5 = 伙伴未同步。现在无法进行故障转移。

6 = 伙伴已同步。可以进行故障转移。有关故障转移要求的信息,请参阅同步数据库镜像(高安全性模式)

NULL = 数据库不可访问或未镜像。

通过查看sys.database_mirrorin确定同步一切正常。

尝试手动注册sql2的时候报以下错误,看到这个报错就立马反应过来,在昨晚的例行变更中运维侧修改了windows的hosatname,但是sqlserver没有识别,还认为是之前的主机名

执行下面的sql可以验证,如果结果相同就没问题,结果不同就需要调整了

use master
go
select @@servername;
select serverproperty('servername')

跑出的结果果然是不一样的,接下来执行下面语句

use master
go
EXEC sp_dropserver 'WIN-90A16T95031';           -- select @@servername的结果
GO
EXEC sp_addserver 'SQL1', 'local'; -- select serverproperty('servername')的结果
go

执行之后需要记得重启sqlsever服务,重启服务之后才能生效

下面附上一张恢复之后的,正常的数据库镜像监视器的截图吧

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。