![SQL Server 2008 复制 - 潜在损失](https://linux22.com/image/795261/SQL%20Server%202008%20%E5%A4%8D%E5%88%B6%20-%20%E6%BD%9C%E5%9C%A8%E6%8D%9F%E5%A4%B1.png)
是否有任何类型的 WAN(跨国)复制可以保证在灾难发生时不会丢失数据?我们是否总是会丢失几秒钟或几分钟的时间?
如果是这样,有什么建议的解决方法吗?我们正在讨论使用云存储或更改或财务应用程序将我们的一两个关键交易记录到异地服务器上。
答案1
看起来是可行的。SQL Server 将其称为数据库镜像,关键点在于使用“高安全性”模式,即同步模式。这意味着提交的每个事务在返回完成之前都将提交给两个实例。
请注意,这肯定会对性能产生影响。而且影响可能很大。每次对数据库进行更新时,都会在本地提交,然后发送到远程(镜像)服务器,在那里进行处理和提交,然后远程服务器将返回已完成事务的通知,然后主数据库服务器才会向客户端返回事务已完成的信息。这种额外的往返和处理将导致一定程度的延迟增加。
有关更多信息,请阅读以下 MSDN 文章:
注意:我不是 SQL Server DBA。我的大部分经验都是使用 PostgreSQL 和 Oracle。可能有更好或替代的方法来实现这一点。如果是这样,希望 SQL Server DBA 能够提供它或纠正我所犯的任何错误。
答案2
我建议您在现场部署数据库镜像或集群,然后通过 WAN 链接部署事务日志复制。
通过 WAN 进行镜像具有非常敏感的延迟阈值,并且如果由于网络吞吐量导致性能不佳,这可能会导致镜像故意不同步以保护数据库,但是……如果数据库镜像集出现损坏,则损坏将复制到所有副本。
当然,这里还有一些决定性因素,例如存储要求。正如您所提到的,您正在考虑使用云存储进行灾难恢复,尽管这可能有助于保证没有数据丢失,但如果此应用程序需要 100% 的正常运行时间,则无法满足关键任务数据库的自动故障转移。回溯到一秒钟,如果这是一个非常小的数据库,则可以通过 WAN 进行镜像,尽管建议使用加密。
但是,如果数据库中有任何安全信息,那么查看数据库内容是否有任何合规性规定也很重要,即它不能存储在公共云上,而是存储在私有云上,以满足特殊情况下的 PCI 等要求。
如果您需要更多帮助,我非常乐意提供帮助或建议。祝您好运!