如何:在另一个数据中心热备用 SQL Server?

如何:在另一个数据中心热备用 SQL Server?

对于我们的 SaaS 应用程序,我希望有一个系统可以应对数据中心范围的故障。

在主数据中心,我们设置了两台带有 MSSQL 数据库镜像(同步)的服务器。这为我们提供了足够好的高可用性解决方案,以应对服务器故障。如果一台服务器死机,它会在几秒钟内自动故障转移(借助第三台见证服务器)。

我正在考虑使用MSSQL 复制或日志传送从镜像数据库中保留热备用服务器另一个数据中心- 注意,这将是跨大西洋的,因此 ping 值较高,约为 100ms。我想我可以使用一些DNS 故障转移具有较短(5 分钟)TTL 的服务,当第一个数据中心发生故障时,它会将流量引导至第二个数据中心。

问题:

我可以使用镜像数据库的复制或日志传送吗(如果故障转移到另一个实例,则可以无缝工作)?

哪一个是首选——复制、日志传送还是其他?

故障转移数据库可以接受写入吗?

或者故障转移是否会导致数据丢失,因此最好将其设置为只读,直到我们故障恢复到主数据中心?

谢谢!

编辑:有人对备用 MSSQL 服务器配置有什么想法吗?

答案1

日志传送或复制都可以与 DB 镜像配合使用 - 您应该使用哪种方式取决于您的需求,但复制比日志传送更难设置和管理,因此我个人会坚持使用日志传送,除非您确实需要复制功能。以下链接提供了有关如何设置每个功能的更多信息。

故障转移数据库可以接受写入吗?

注意:我假设您的意思是一旦发生故障转移,而不是在日常正常运行期间。

当然,通过日志传送,可以让辅助 DC 中的故障转移数据库接受写入。如果您可以获取并应用在主 DC 中运行的数据库的尾部日志备份(以最大限度地减少数据丢失并保持日志链完整),那么您将拥有正在运行的数据库的最新副本,然而不要忘记,在这种情况下,您处于暴露状态。定期日志备份可以有所帮助,但如果您的目标是不丢失任何事务,那么当您仅在其他 DC 中的日志传送辅助服务器上运行时,就无法保证这一点。最好只在只读状态下运行应用程序,直到您的 HA 再次设置。从此状态,您可以将日志备份复制到主数据中心,然后重新初始化镜像。

有用的链接:

http://msdn.microsoft.com/en-us/library/ms187016.aspx- 日志传送和数据库镜像 http://msdn.microsoft.com/en-us/library/ms151799.aspx- 复制和数据库镜像

注意:要获得对 logshipping 数据库的写访问权限,您需要使用恢复功能恢复数据库数据库名。之后,它可以像主数据库一样被写入,但执行此操作后,您无法恢复任何其他日志。您需要恢复新的完整备份才能使 logshipping 再次运行。但它至少允许您故障转移到它。

答案2

我正在计划类似的事情,不是在全球范围内,而是在美国。我们计划使用日志传送。它似乎(至少对我来说)比复制(我曾经使用过)更强大,更易于管理,并且更容易设置(至少对我来说)。

以下是优点缺点。对我们来说最大的缺点是没有像镜像那样的自动故障转移功能。

答案3

总体而言,您的路线正确,但请注意以下几点:

  1. DNS 缓存和
  2. 某些服务器不遵守 TTL

这就是它提供有限 HA 提升的原因。长达 24 小时的缓存并不罕见。我认为这更像是一种 DR 方法,因为您只有在主站点受到较长时间影响的情况下才会这样做,因为故障恢复也需要 24 小时才能传播到某些客户端。

相关内容