我应该使用数据库镜像吗?

MSB*_*MSB 5 sql-server mirroring sql-server-2012

所以我手头有以下场景:

我有一个为特定应用程序运行的产品数据库,数据库中的所有插入都通过三个单独的连接进入。

最近我开发了一个新的数据库扩展,以便使用 SSAS 创建预测。

我的老板希望我通过创建产品数据库的副本来运行现场测试,以查看预测的执行情况。

我的问题是双重的:

根据 SQLServer 2012 的 Microsoft 文档,数据库镜像功能将在未来版本中删除:https://msdn.microsoft.com/en-us/library/ms189852.aspx该服务器目前正在运行 2012 但它可能会在未来所以我觉得这个方法是死路一条。

我应该尝试在这种情况下使用数据库镜像吗?

这种数据库镜像方式有什么好的选择?

Ada*_*amL 6

我认为镜像不是这种情况下的最佳解决方案,停产公告甚至不是主要原因,特别是如果您计划仅在有限的时间内维护测试环境。

镜像是一种高可用性解决方案,旨在在发生故障时提供热/热备用数据库,或将报告卸载到数据库的精确副本(带快照)。因此,镜像的以下属性同时也是其缺点:

  • 两个数据库将完全同步;您无法选择部分数据库进行镜像,最终可能会从主体数据库传输大量不需要的数据,从而降低性能并增加镜像的存储要求。
  • 主体数据库的变化会立即反映在镜像数据库上,影响生产数据库并增加网络流量(与单次下班后更新相反)。
  • 您只能从镜像数据库(通过快照)读取,因此您将无法插入自己的测试数据。

因此,如果您不需要经常从生产环境更新测试数据库,最简单的解决方案是手动恢复测试数据库上的完整备份。如果您需要最新的测试数据库,您甚至可以安排自己的COPY_ONLY备份和恢复。

您还可以使用Merge Replication,它比 Mirroring 具有以下优势:

  • 同步计划:在工作时间内不会影响生产数据库
  • 过滤:您可以选择要复制的内容
  • 冲突解决:如果你想用自己的测试数据和生产数据填充你的数据库,你可以应用你自己的逻辑来处理冲突。

快照复制事务复制在这里也是一个可行的选择。

希望这会有所帮助,并让我们知道您最终选择了什么。

  • 日志传送也是一种选择。 (5认同)