1.telnet 镜像服务器IP port,是正常的
2.主机和镜像的数据库都是正常的,这样子看来是两台主机的证书出了问题了。
3.查看主机和镜像DB的日志,终于在镜像端有收获,
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.'. [CLIENT: xxx.xxx.xxx.xxx]
标注了颜色的字体说明,证书失效了。 因为主机和镜像是一起做的,所以证书都失效了
4.查看证书
select name, start_date, expiry_date
from sys.certificates
where name not like '##%';
发现其失效时间已经过去2个多礼拜了,但是日志错误今天才爆出,预计是镜像没有断开之前DB是允许一段时间用户去调整证书的,直到镜像断开
解决方案:
需要对证书进行重新生成更新,重做对生产并不会产生影响,但为了尽避免高峰操作,选择晚上处理。
系统里总共有4个DB涉及镜像,重做证书再切换发现切不过去,索性重新做了一遍镜像。
1.删除镜像
--删除镜像过程
--删除端点
select * from sys.endpoints;
drop endpoint Endpoint_Mirroring;
--删除证书
select * from sys.certificates
drop certificate HOST_A_cert;
drop certificate HOST_B_cert;
--删除master key
select * from sys.symmetric_keys ;
DROP MASTER KEY;
select * from sys.syslogins ;
select * from sysusers;
--删除登陆和用户
DROP LOGIN HOST_A_login
drop user HOST_A_user
--取消镜像
alter database eol_xcsh set partner off;
2.生成镜像 参考:http://my.oschina.net/Kenyon/blog/53469
注意:重新生成证书的时候最好指定失效日期,并设大一点,不然默认是一年的,时间到了再去重设就麻烦了。