在我们的环境中,有些服务器位于“始终在线”可用性组中,有些则是独立的。
我们通常备份到网络共享,但是最近我们观察到,随着数据库的增大,花费的时间越来越长,这会使整个网络变慢。
Ola hallengren的脚本被用于压缩,并且还分割备份文件。我仅执行每日“完整”备份。备份将转到网络共享EMC isilon驱动器。
我从不满意EMC DD Boost。唯一的选择是执行本地备份,然后复制到相同的网络共享。
除了上述以外,还有其他有效的方法吗?
在我们的环境中,有些服务器位于“始终在线”可用性组中,有些则是独立的。
我们通常备份到网络共享,但是最近我们观察到,随着数据库的增大,花费的时间越来越长,这会使整个网络变慢。
Ola hallengren的脚本被用于压缩,并且还分割备份文件。我仅执行每日“完整”备份。备份将转到网络共享EMC isilon驱动器。
我从不满意EMC DD Boost。唯一的选择是执行本地备份,然后复制到相同的网络共享。
除了上述以外,还有其他有效的方法吗?
Answers:
您提到的替代方法似乎是最佳选择。
您可以做一个两步过程:
这样,您的备份是本地的,并且备份很快。您将需要更多的磁盘空间和明显的冗余(如果备份磁盘出现故障,您将不希望丢失所有备份)。
或者,按照Max Vernon的建议,将Robocopy作为备份作业中的一个步骤,以确保仅在成功完成备份后以及在备份完成后尽快进行robocopy。只要备份保持本地状态,备份与数据就有相同的风险。
另外,请定期测试您的还原,因为如果您无法还原备份,它将起到什么作用!
另外,请参阅我对SQL Backup调整大型数据库的回答
有一些方法可以通过与MAXTRANSFERSIZE或BUFFERCOUNT之类的不同旋钮弄混来调优备份,或者剥离文件(您已经注意到自己已经在做这件事)。
问题在于,触摸这些旋钮可能仍会导致网络和/或存储的限制,并且它们对备份时间没有任何实际影响。
您的第一项工作应该是使用Crystal Disk Mark或DiskSpd对要备份的存储进行基准测试。这将使您对可以预期写入达到最佳状态的速度有一些了解。
接下来需要测试的是从要备份的驱动器中读取的内容。如果将备份运行到NUL,则可以计时仅读取备份部分所花费的时间,而不必将其写入磁盘。
牢记这两个数字,您就可以将其他旋钮弄乱,看看哪个旋钮使您离它们最近,无论您的备份目标是本地的还是联网的。
几个潜在的解决方案:
您可以在Ola的脚本中调整许多与性能相关的参数,您也许可以对这些参数进行调整以获得所需的性能:
BlockSize
指定物理块大小(以字节为单位)。
DatabaseBackup中的BlockSize选项使用BLOCKSIZE
SQL Server BACKUP命令中的选项。
BufferCount
指定用于备份操作的I / O缓冲区的数量。
DatabaseBackup中的BufferCount选项使用BUFFERCOUNT
SQL Server BACKUP
命令中的选项。
MaxTransferSize 指定在SQL Server和备份媒体之间使用的最大传输单位(以字节为单位)。
DatabaseBackup中的MaxTransferSize选项使用MAXTRANSFERSIZE
SQL Server BACKUP
命令中的选项。
有很多可能的选择,但是随着数据库的增大和完整备份所花费的时间更长,如果您还没有的话,您可能必须合并差异备份:
与创建完整备份相比,创建差异备份可以非常快。差异备份仅记录自基于差异备份的完全备份以来更改过的数据。这有助于进行频繁的数据备份,从而降低了数据丢失的风险。
我的理解是,Ola的脚本甚至可以设置为使用ModificationLevel参数根据数据库中的更改量来决定是完全备份还是差异备份。
我们使用EMC DD Boost,欢迎您对此发表意见,但是由于使用了客户端重复数据删除方法,因此我们发现即使是多TB数据库的完整备份也可以非常快,到了我们不必担心SQL Server差异备份的地步。实际上,通过使用EMC DD,您正在执行差异备份,只是不在SQL Server中。即使在DDBoost上,使用多个目标文件也可以极大地提高速度。