SQL Server 备份提速

来源:互联网 发布:道可道 知乎 编辑:程序博客网 时间:2024/06/06 00:23

对于大的数据库,备份花费的时间是非常多的,而且很耗费资源。如果能让备份跑的更快?

 

可以使用下面的参数:

1. 将数据库备份多到个文件(多个磁盘)

2.启用压缩功能(2008,R2之后都有)

3. 使用参数maxtransfersize和buffercount

4.调整备份侧率,使用文件和文件组备份

 

BUFFERCOUNT  :指定用于备份操作的 I/O 缓冲区总数。可以指定任何正整数;但是,较大的缓冲区数可能导致由于 Sqlservr.exe 进程中的虚拟地址空间不足而发生“内存不足”错误。

缓冲区使用的总计空间由下面公式确定:buffercount*maxtransfersize

MAXTRANSFERSIZE  :指定要在 SQL Server 和备份介质之间使用的最大传输单元(字节)。可能的值是 65536 字节 (64 KB) 的倍数,最多可到 4194304 字节 (4 MB)。

将数据库备份到多个文件多个磁盘,这样做有几个好处:

 

1.备份到多个磁盘,可以充分利用磁盘IO,减少备份时间

 

2. 另外如果单个磁盘空间不足的话,备份到多个文件可以使备份文件变小,解决磁盘空间问题,另外通过网络移动到其他地方也比较方便。

 

3.备份到多个文件可以SQL Server使用多个备份线程,提供效率。

 

我们可以使用Management studio或者T-SQL实现备份到多个文件:

 

 

T-SQL:

BACKUP DATABASE [AdventureWorks]TO DISK=N'D:\MSSQL\MSSQL10.SQL2K8\MSSQL\Backup\AdventureWorks.bak', 

DISK = N'E:\MSSQL\MSSQL10.SQL2K8\MSSQL\Backup\advantureWorks1.bak', 

DISK = N'F:\MSSQL\MSSQL10.SQL2K8\MSSQL\Backup\AdventureWorks2.bak'WITHNOFORMAT,NOINIT, 

NAME = N'AdventureWorks-Full Database Backup',SKIP,NOREWIND,NOUNLOAD, STATS= 10

GO

 

还原也很简单:

restore database [AdventureWorks]from   

DISK = N'D:\MSSQL\MSSQL10.SQL2K8\MSSQL\Backup\AdventureWorks.bak', 

DISK = N'E:\MSSQL\MSSQL10.SQL2K8\MSSQL\Backup\advantureWorks1.bak', 

DISK = N'F:\MSSQL\MSSQL10.SQL2K8\MSSQL\Backup\AdventureWorks2.bak'withreplace

 

另外注意一点:在备份的时候使用CHECKSUM选项,虽然会增加备份的时间,但是可以保证备份的质量。如果最后还原的时候发现备份无法使用是很糟糕的。

 

 

原创粉丝点击