![SQL 2008 镜像,如何从镜像数据库进行故障转移?](https://linux22.com/image/512234/SQL%202008%20%E9%95%9C%E5%83%8F%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BB%8E%E9%95%9C%E5%83%8F%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9B%E8%A1%8C%E6%95%85%E9%9A%9C%E8%BD%AC%E7%A7%BB%EF%BC%9F.png)
我在 SQL 2008 中配置了数据库镜像设置,使用高安全性、同步模式,没有自动故障转移。我没有见证实例。
关于高可用性,我理解镜像是一种比日志传送更好的策略(更快、更平稳的故障转移),并且比集群更便宜(因为许可证和硬件成本)。
根据 MS 文档,要进行故障转移,您需要访问主数据库,然后在“镜像”选项中单击“故障转移”按钮。但我想从镜子数据库,因为如果主服务器发生故障,所有这些设置都完成,那么会有什么好处呢?
显然我漏掉了一些东西。如果镜像不是解决服务器停机问题的方案(如果我理解正确的话,集群也是),那么哪些实际(即现实世界的例子)案例会从镜像中受益以实现高可用性?
非常感谢您的回复!我确实需要一些启发。
答案1
简单地说,您必须在高安全模式下从主服务器激活镜像,并且不能自动故障转移。
此方法非常适合计划内停机和维护。但在发生灾难或计划外停机时,这种方法并没有什么用,因为您无法在无法访问主服务器的情况下进行故障转移。
我使用一台运行 MSSQL Express 的非常便宜的旧电脑作为监控服务器。它上面装有 Windows XP Pro。我相信你可以找到一台小型计算机来执行监控服务器的任务。只要能满足 MSSQL Express 的最低要求就可以了。
希望这可以帮助。
答案2
如果您的主体发生故障,您可以强制镜像数据库联机,但可能会丢失在主体上提交但从未到达镜像的任何交易。
ALTER DATABASE YourDatabaseName SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
在镜像上运行该查询,数据库现在将成为新的(公开的)主体。一旦您之前的主体实例重新上线,镜像将在两者之间暂停。您必须手动重新启用镜像,您将收到一条警告,警告您由于之前的镜像重新上线的方式可能导致数据丢失。