镜像监视器无法查看备机的状态
最近刚刚搭建了一套基于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服务,重启服务之后才能生效
下面附上一张恢复之后的,正常的数据库镜像监视器的截图吧
- 点赞
- 收藏
- 关注作者
评论(0)