搜尋本站文章

2010-06-03

「等量媒體集(Striped Media Set)」與「鏡像媒體集(Mirrored Media Sets)」的整合使用

使用「等量媒體集(Striped Media Set)」方式來備份
類似於 RAID 0,將資料分散存放到各個備份裝置上,其優勢在於可以減少備份的時間。但卻與 RAID 0 具有一樣的風險問題。
請參考下圖所示:






使用「鏡像媒體集(Mirrored Media Sets)」方式來備份
類似於 RAID 1,將資料備份為多個媒體集副本,降低備份裝置功能不正常的影響,進而提高備份可靠性。
目前僅支援使用 T-SQL 方式來建置。







若你的環境,擁有:多部磁碟機,或是多顆實體硬碟、多組磁碟陣列時。
可以考慮將「等量媒體集」與「鏡像媒體集」的整合使用。
若能搭配合適的硬體設備,或許能達到類似 RAID 10 功能。

請參考以下的範例程式碼:
-- 建立「 等量媒體集(Striped Media Set)」
--01 建立備份裝置:SMS01、SMS02、SMS03
USE master
GO
EXEC sp_addumpdevice 'disk', 'SMS01', 'C:\myAdmin\Device\SMS01.bak'
EXEC sp_addumpdevice 'disk', 'SMS02', 'C:\myAdmin\Device\SMS02.bak'
EXEC sp_addumpdevice 'disk', 'SMS03', 'C:\myAdmin\Device\SMS03.bak'
GO

-- 建立「鏡像媒體集(Mirrored Media Sets)」
--01 建立備份裝置:MMS01、MMS02、MMS03
EXEC sp_addumpdevice 'disk', 'MMS01', N'C:\myAdmin\Device\MMS01.bak'
EXEC sp_addumpdevice 'disk', 'MMS02', N'C:\myAdmin\Device\MMS02.bak'
EXEC sp_addumpdevice 'disk', 'MMS03', N'C:\myAdmin\Device\MMS03.bak'
GO

-- 檢視每個備份裝置
SELECT * FROM sys.backup_devices

--01 執行備份作業
USE master
GO
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS;
SET STATISTICS TIME ON
GO
BACKUP DATABASE AdventureWorksDW2008
TO SMS01, SMS02, SMS03
MIRROR TO MMS01, MMS02, MMS03
WITH FORMAT, CHECKSUM
GO

/*
已處理資料庫 'AdventureWorksDW2008' 的 8840 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Data'。
已處理資料庫 'AdventureWorksDW2008' 的 1 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Log'。
BACKUP DATABASE 已於 1.172 秒內成功處理了 8841 頁 (58.933 MB/sec)。

SQL Server 執行次數:
,CPU 時間 = 77 ms,經過時間 = 1239 ms。
*/

-- 查詢媒體集的相關資訊
SELECT F.logical_device_name N'邏輯裝置名稱', F.physical_device_name N'備份裝置的實體名稱',
M.media_set_id N'媒體集的唯一識別碼', M.media_family_count N'媒體集中的媒體家族數目', M.mirror_count N'媒體集中的鏡像數目',F.mirror N'鏡像數目'
FROM msdb.dbo.backupmediaset M INNER JOIN msdb.dbo.backupmediafamily F
ON M.media_set_id = F.media_set_id


媒體集的相關資訊,請參考下圖所示:



/*=========================================================*/
--02 成功:執行還原作業,使用同一組的媒體集:SMS01, SMS02,SMS03
USE master
GO
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS;
SET STATISTICS TIME ON
GO
RESTORE DATABASE AdventureWorksDW2008
FROM SMS01, SMS02,SMS03
WITH REPLACE
GO

/*
已處理資料庫 'AdventureWorksDW2008' 的 8840 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Data'。
已處理資料庫 'AdventureWorksDW2008' 的 1 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Log'。
RESTORE DATABASE 已於 0.675 秒內成功處理了 8841 頁 (102.326 MB/sec)。

SQL Server 執行次數:
,CPU 時間 = 155 ms,經過時間 = 1135 ms。
*/

--03 成功:執行還原作業,使用同一組的媒體集:MMS01, MMS02, MMS03
USE master
GO
RESTORE DATABASE AdventureWorksDW2008
FROM MMS01, MMS02, MMS03
WITH REPLACE
GO

/*
已處理資料庫 'AdventureWorksDW2008' 的 8840 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Data'。
已處理資料庫 'AdventureWorksDW2008' 的 1 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Log'。
RESTORE DATABASE 已於 0.620 秒內成功處理了 8841 頁 (111.403 MB/sec)。

SQL Server 執行次數:
,CPU 時間 = 172 ms,經過時間 = 806 ms。
*/

--04 成功:執行還原作業,刻意更換使用不同組的媒體集:SMS01, MMS02, SMS03,但依序使用了正確的子裝置。
USE master
GO
RESTORE DATABASE AdventureWorksDW2008
FROM SMS01, MMS02, SMS03
WITH REPLACE
GO

/*
已處理資料庫 'AdventureWorksDW2008' 的 8840 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Data'。
已處理資料庫 'AdventureWorksDW2008' 的 1 頁,檔案 1 上的檔案 'AdventureWorksDW2008_Log'。
RESTORE DATABASE 已於 0.833 秒內成功處理了 8841 頁 (82.917 MB/sec)。

SQL Server 執行次數:
,CPU 時間 = 125 ms,經過時間 = 1049 ms。
*/

--05 失敗:執行還原作業,刻意更換使用不同組的媒體集:SMS01, MMS01, SMS03,但卻使用了同一個部分的子裝置。
USE master
GO
RESTORE DATABASE AdventureWorksDW2008
FROM SMS01, MMS01, SMS03
WITH REPLACE
GO

/*
訊息 3227,層級 16,狀態 1,行 1
"MMS01(C:\myAdmin\Device\MMS01.bak)" 上的備份媒體是媒體家族 1 的一部分,且該媒體家族已經在 "SMS01(C:\myAdmin\Device\SMS01.bak)" 上處理完成。
請確定已正確指定備份裝置。至於磁帶裝置,請確定已載入正確的磁碟區。
訊息 3013,層級 16,狀態 1,行 1
RESTORE DATABASE 正在異常結束。
*/

/*=========================================================*/
-- 刪除所建立的備份裝置、實體檔案
USE master
GO
EXEC sp_dropdevice @logicalname=N'SMS01', @delfile='DELFILE'
EXEC sp_dropdevice @logicalname=N'SMS02', @delfile='DELFILE'
EXEC sp_dropdevice @logicalname=N'SMS03', @delfile='DELFILE'
EXEC sp_dropdevice @logicalname=N'MMS01', @delfile='DELFILE'
EXEC sp_dropdevice @logicalname=N'MMS02', @delfile='DELFILE'
EXEC sp_dropdevice @logicalname=N'MMS03', @delfile='DELFILE'
GO



上述的範例程式碼,必須要在擁有:多部磁碟機,或是多顆實體硬碟、多組磁碟陣列,才能發揮效能。



「等量媒體集(Striped Media Set」
「等量集」(Stripe Set) 是指磁碟檔案的集合,在此集合中,資料會分成幾個區塊,並依照固定順序散發。
同時使用多個備份裝置,讓備份可同時寫入全部裝置。同樣地,可以同時從多個裝置還原備份。
類似於 RAID 0。

「鏡像媒體集(Mirrored Media Sets)」
只有 SQL Server 2005 Enterprise Edition 和更新版本才支援鏡像備份媒體集。

鏡像媒體集可降低備份裝置功能不正常的影響,進而提高備份可靠性。
這些功能不正常特別嚴重,因為備份是避免資料遺失的最後一道防線。
隨著資料庫增長,備份裝置或媒體失敗導致備份無法還原的機會也越大。
鏡像備份媒體提供的備援性可以提升備份的可靠性。

「鏡像媒體集」是由多份媒體集副本 (「鏡像」) 組成。
鏡像媒體集包含二到四個鏡像。
媒體集包含一個或多個媒體家族,其中每一個都對應到備份裝置。
例如,如果 BACKUP DATABASE 陳述式的 TO 子句列出三個裝置,BACKUP 會將資料分散在三個媒體家族中,每個裝置一份資料。
建立媒體集 (由 BACKUP DATABASE 陳述式指定 WITH FORMAT) 時,就會定義媒體家族和鏡像的數目。

類似於 RAID 1。



參考資料:
使用鏡像備份媒體集
http://msdn.microsoft.com/zh-tw/library/ms175053.aspx
大型關鍵任務環境中的備份與還原

http://msdn.microsoft.com/zh-tw/library/ms190973.aspx

BACKUP (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms186865.aspx