将 SQL Server 事务日志保存到网络共享

将 SQL Server 事务日志保存到网络共享

我们在 SQL Server 2016 服务器上运行我们的 ERP 软件,作为 VMware ESXi 上的 VM。目前,我们的 VM 配置了 2 个驱动器,数据进入 1 个驱动器,日志进入另一个驱动器。当 VM 损坏时,我们遇到了问题,我们恢复到了 VEEAM 备份。恢复花了很长时间,但成功了。不幸的是,这导致大约 4 小时的数据丢失。由于事务日志随服务器一起出现问题,我们无法从事务日志中恢复。

因此我们考虑将事务日志写入另一个网络共享。但在尝试在测试数据库中进行设置时,SQL Server 似乎不允许这样做。

有办法完成这个任务吗?性能会受到很大影响吗?有更好的方法吗?

答案1

有办法完成这个吗?

是的,但您可能不想这样做。您可以启用跟踪标志 1807让 SQL Server 使用 UNC 路径来存储其数据和日志文件。但是,根据该文档:

Microsoft 通常建议您使用存储区域网络 (SAN) 或本地连接磁盘来存储 Microsoft SQL Server 数据库文件,因为此配置可以优化 SQL Server 的性能和可靠性。

(尽管链接的文档表明 SQL 2016 应该默认允许这样做,因此您需要详细说明“看来 SQL Server 不允许这样做”。)

性能是否会受到严重影响?

这取决于取决于您的硬件。这取决于“本地”存储的位置——ESXi 主机内部的旋转磁盘、SAN 还是其他地方。并且取决于您考虑使用的网络共享底层的存储。它们最终可能会使用相同的硬件,在这种情况下,性能差异可能会归结为一点 VMware 开销。Microsoft 在上面链接的文档中详细介绍了性能注意事项。

有没有更好的方法?

是的

事务日志文件本身(通常*.ldf)不是您想要用来从灾难中恢复的东西。将它们放在服务器本地是合适的。将它们放在与数据文件(通常*.mdf)不同的驱动器上(正如您所做的那样)是一件好事。

当你遇到灾难并需要从备份中恢复时,你会从完整备份中恢复,然后可能从一些差异备份中恢复,然后可能从一些事务日志备份中恢复。因此,你应该编写你的备份到远离服务器的位置。或者至少,如果您必须在本地写入它们,请有一个立即将它们复制到其他地方的过程。正如您所发现的,许多类型的故障都会导致所有本地数据无法使用。

有很多关于如何建立适当备份机制的教程。布伦特奥扎尔无限公司有几个不错的。

相关内容