Mssql主备见证的弊端及主备模式主down掉怎么恢复
mssql主备见证有个没有解决的问题,mssql的主备是针对单个库的,有时候单个或多个库主备切换了,但是整个主数据库并没有挂掉,并且还运行着其他的库,程序检测到的数据库连接是正常的,只是部分库连接不了,这个时候程序切换不过来,也不能切换,切换了部分还在主上的数据库也连接不了,除非是整个数据库连接不上或者关机了,这种情况数据库和程序同时切换才有意义。
后来我们就没有要见证了,只有主从,一直运行起,只是做一个数据备份。
程序的主备连接还是保留起,毕竟主从的情况,挂一台就是整体切换了。
为了以防主数据库突然各种原因down了,这个时候备机数据库是不能读写的,备机显示(镜像,已断开连接/正在恢复)。我们要想办法恢复备机,而且最好是还能保持主备的模式,在主机起来的情况下还可以继续主备和切换回去。下面以A(主)B(备)来说明。
停止主机A的SQL SERVER 服务(比如断电),此时备机上的数据库会显示正在恢复状态,大概持续几十秒
此时,在B机上执行
use master;
alter database dataName set partner FORCE_SERVICE_ALLOW_DATA_LOSS
开始会显示(正在恢复),过几秒会显示(主体,已断开连接)
假如现在有业务往数据库里插也是能成功的
现在把原主机A恢复(通电),起来后A显示(镜像 挂起/正在恢复),B显示(主体 挂起)然后在B机里操作
use master;
alter database dbtest set partner resume;
如果A启动不了了,可以重新配置一台A机,在B机上取消镜像重新备份数据库和日志,然后到A机恢复重新设置镜像。期间B机可以继续提供服务,不影响镜像的建立。
此时A机是作为镜像的,B机是作为主机的,数据开始同步,如果要再切换一下,则再在B上执行下面的sql或者手动切换
use master;
alter database dbtest set partner failover;