[SQL Server][備份]提升備份的速度Part2(分檔備份)

自從SQL Server 2008支援壓縮備份,為了節省空間及加速備份作業,都會把壓縮備份作為標準步驟,

除了壓縮備份的招式,最近客戶端回報完整備份約需要20分鐘,來筆記使用分檔加快完整備份的腳步的測試。

 

單個備份檔案語法

BACKUP DATABASE [RD] TO  
DISK = N'T:\SQL\RD.bak'
WITH NOFORMAT, NOINIT,  NAME = N'RD-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD,COMPRESSION,  STATS = 10
GO

分檔備份檔案語法

BACKUP DATABASE [RD] TO  
DISK = N'T:\SQL\RD_S1.bak',  
DISK = N'T:\SQL\RD_S2.bak', 
DISK = N'T:\SQL\RD_S3.bak',
DISK = N'T:\SQL\RD_S4.bak',
DISK = N'T:\SQL\RD_S5.bak',
DISK = N'T:\SQL\RD_S6.bak',
DISK = N'T:\SQL\RD_S7.bak',
DISK = N'T:\SQL\RD_S8.bak'

WITH NOFORMAT, NOINIT,  NAME = N'RD-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO

 

LAB環境中有一個資料庫是9GB大小,DB Server放在VM,分配到的是16核心,另外磁碟機後面接著一座Entry Level的SAN Storage:

分別測試1個備份檔案、8個、16個及32個備份檔案,執行時間:

#備份檔案數 執行時間(s) 每秒處理備份MB/s
1 33.785 253.291
8 21.963 389.630
16 17.767  481.648
32 17.145 499.121

 

資料庫備份檔案:

 

小結:

  • 可以發現拆成多個檔案後,效能可以明顯的提升。
  • 還原也是要多個檔案一起才能還原喔。
  • 從參考範例中發現,在#64 Core + 12 LUNs ,可以超過1 GB/sec,是我們LAB環境的2倍多,應該還有成長空間。

 

補充查看最近資料庫備份狀況的語法:

SELECT
  CONVERT(char(100), SERVERPROPERTY('Servername')) AS 'Server Name',
  msdb.dbo.backupset.database_name,
  msdb.dbo.backupset.backup_start_date,
  msdb.dbo.backupset.backup_finish_date,
  DATEDIFF(SS, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date) AS 'Duraction Time(s)',
  CASE msdb..backupset.type
    WHEN 'D' THEN 'Database'
    WHEN 'L' THEN 'Log'
    WHEN 'I' THEN 'Differential database '
  END AS backup_type,
  msdb.dbo.backupset.backup_size / 1024 / 1024 / 1024 AS 'Size(GB)',
  msdb.dbo.backupset.backup_size / 1024 / 1024 / 1 + DATEDIFF(SS, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date) AS 'Process(MB/s)',
  msdb.dbo.backupset.name AS backupset_name,
  compressed_backup_size / backup_size * 100 AS 'compress rate(%)'
FROM msdb.dbo.backupset
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7)
ORDER BY msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_finish_date

 

 

參考:

Backup More Than 1GB per Second Using SQL2008 Backup Compression