每个SQL Server上面执行的最重要的任务之一都是运行备份和恢复。备份将你的数据库拷贝一份,当 问题发生在你的产品数据库的时候,备份通过给你一份完全的拷贝来恢复而提供安全措施。在大多数情况 下,恢复过程都是以非产品关键的方式完成的,例如净化开发/测试环境或者净化报告报告环境。但是在 大多数的关键模式下,你都需要通过恢复这些备份拷贝来修正产品环境。
基于创建备份的重要性,以及恢复备份来纠正产品问题的关键需求,时间就是根本。备份是在线操作 ,但是他们确实使用了系统资源。然而,恢复需要对数据库进行额外的访问,所以在错误状态中,这甚至 是个更加关键的任务。
考虑到完成这些任务的时间因素,还有一些事情需要在备份端和恢复端完成,以改善这些操作的速度 。
硬件
备份和恢复时间是被你的硬件,以及这些硬件上的配置影响的。从硬件的角度来说,这里有一些你需 要考虑用来提高性能的事情。
分散磁盘I/O。通过使用尽量多的驱动,你可以确保磁盘I/O不成为瓶颈。还要确保你没有同时使用同 一块硬盘进行读写操作。
采用最新的硬件技术使用最快的RAID配置:RAID 0, RAID1, RAID10 然后是 RAID 5.
使用最快的驱动
使用最快的控制器,并且将磁盘活动分散到不同的控制器或者不同的通道上去。
使用本地添加的磁盘,不要通过网络进行备份。
备份到磁盘上,然后存档到磁带上。
对快照和分割镜像备份使用SAN技术。
如果你需要备份另一台机器,那么尽可能地使用最快的网卡和交换机。还有,如果你能够将这些网络 流量与正常的网络流量区分开,那么你就可以降低网络I/O瓶颈的可能性。
本地备份
另一个可能会影响完成备份所费时间的领域就是何时,以及如何运行备份。
在服务器利用时间较低的时候执行
不要在同一时间运行你所有的备份。
不要在大型备份的同一时间运行批处理程序。
使用备份选项来写入到多个文件中。这将会将你的I/O分散,同时增加线程数量。
同时使用几种备份技术:完全、区分的和日志。
本地恢复
从恢复的角度来说,上面提到的大部分时间都是用在了恢复上面。这里是一些额外的技巧:
不同阶段使用不同的领域,这样备份就被部分地恢复了,而不需要在同一时间恢复所有备份。
使用恢复过程,例如Log Shipping,达到与先前某个点类似的一些东西。
使用除了备份和从数据恢复中重新存储之外的其它技术,例如聚簇、复制、CDP等。
第三方软件
一个关键的节省时间的方法就是使用备份压缩工具构建特别针对SQL Server的备份。在市场上有一些 这样的工具,使用它们可以在最小努力的情况下获得最大的收益。
Idera的 SQLsafe
Quest的 SQL LiteSpeed
Red-Gate的 SQL Backup
基于使用Idera和各种各样硬件的供应商们进行的测试,Idera可以达到每小时4.5TB的备份速率,通过 使用SQL safe的重新存储的速率可以达到每小时2.3TB。通过以下链接察看有关设置新的性能记录的额外 信息。这几乎是大多数SQL环境的极限值,不论是从配置硬件的成本,到每小时4.5TB备份数据库的需求。 但是现实情况是通过同时配置关于硬件和软件的完整解决方案,是可能达到的。
小结
正如你看到的,要提高你的备份和重新存储过程的吞吐量,有一些不同的事情可以完成。其中的一些 是非常简单的修正,而另外一些则需要配置你的硬件,购买新的硬件或者购买可以帮助提高速度的工具。
基于Idera测试得到的每小时4.5TB的速度,使用第三方备份压缩工具看起来是最简单的,和最轻松的 方式。我不认为有很多数据库会达到这样程度的数据库规模,所以基于测试,大多数的完全备份都可以在 一小时之内完成。这里是一份关于最大型的数据库的报告,正如你看到的,还没有很多的数据库达到超越 TB的规模。从这份报告来看,这个数字大概2年就会翻3倍,我确信这个数量级不到两年就会达到3倍。
但是使用所有这些选项的综合,你将会达到更快的备份和重新存储的速度,但是即使是以上所有的方 法,也总是会有某些类型的限制。