備份SQL Server數據庫到Azure Storage

對於生產數據來說,數據的安全性是相當重要的,任何數據的丟失均可能產生嚴重的的後果。而備份做爲數據的副本,能夠在當數據庫出現故障或者遭到破壞時能夠根據備份的數據庫及事務日誌文件還原到最近的時間點將損失降到最低點。
對於傳統的備份來說,通常都是使用數據庫自帶的備份或使用第三方的備份軟件將數據庫備份到本地的磁盤/磁帶存儲,這種備份方式的前提是須要有一個大的存儲池用來按照備份文件的生命週期來存儲咱們的備份文件。這就意味着咱們須要準備一個大的存儲池。考慮到準備存儲池須要必定得資源,那麼不少小夥伴確定就會問了,我可否將數據庫備份到雲?答案是能夠得。那麼接下來咱們就一塊兒來聊聊如何將SQL Server數據庫備份到雲端和備份到雲端所帶來的好處。
將數據庫備份到azure storage的好處以下:sql

  • 靈活、可靠、無限制的站點外存儲:在 Microsoft Azure Blob 服務上存儲備份是一種既便捷靈活又易於訪問的站點外存儲方法。 爲SQL Server 備份建立站點外存儲就像修改現有腳本/做業同樣簡單。 站點外存儲位置一般應遠離生產數據庫位置,以防止出現同時影響站點外和生產數據庫位置的一個災難。 經過選擇地理複製 Blob 存儲區,在發生可能影響整個區域的災難時多了一層額外的保護。 此外,備份副本隨時隨地可用,並能夠輕鬆訪問它們來執行還原。
  • 備份存檔:在對備份進行存檔時,Microsoft Azure Blob 存儲服務可以提供可替代經常使用磁帶存儲方式的更好方式。 選擇磁帶存儲時可能須要將數據實際運輸到場外設施,而且須要採起一些介質保護措施。 在 Microsoft Azure Blob 存儲區中存儲備份能夠提供一個即時、高度可用、耐久的存檔方案。
  • 無硬件管理開銷:沒有有關 Microsoft Azure 服務的硬件管理開銷。 Microsoft Azure 服務管理硬件並支持地理複製以提供冗餘和防止硬件故障。
  • 當前對於在 Microsoft Azure 虛擬機中運行的 SQL Server 實例,能夠經過建立附加的磁盤來備份到 Microsoft Azure Blob 存儲服務。 可是,對於能夠附加到 Microsoft Azure 虛擬機的磁盤數有限制。 限制值爲:超大實例最多使用 16 個磁盤,較小的實例可以使用的磁盤則更少。 經過容許直接備份到 Microsoft Azure Blob 存儲區,你能夠繞過 16 個磁盤的限制。
    此外,目前存儲在 Microsoft Azure Blob 存儲服務中的備份文件直接可用於本地 SQL Server 或在 Microsoft Azure 虛擬機中運行的其餘 SQL Server ,而無需進行數據庫附加/分離或下載並附加 VHD。
  • 成本權益:只須要爲使用的服務付費。 能夠做爲經濟合算的站點外備份存檔方案。

可是須要注意將SQL Server備份到Azure Storage須要確保數據庫SQL Server 2012 SP1 CU2及以上版本。數據庫

說了這麼多,下面咱們就一塊兒來看一下,如何將數據庫備份到Azure Storage。
首先咱們須要準備一個存儲帳戶:
備份SQL Server數據庫到Azure Storageapi

獲取access key,本次示例中咱們使用access key的方式訪問存儲帳戶:
備份SQL Server數據庫到Azure Storage安全

使用以下T-SQL在SQL中建立帳戶:ide

IF NOT EXISTS(SELECT * FROM sys.credentials

 WHERE credential_identity = ' bkuptour')

CREATE CREDENTIAL bkuptourl WITH IDENTITY = 'sql12bak', SECRET = '5amfZJpKLcR2lAfEBZod18VYbxZOPUbtKH9RowDQ3Ixv5sGMnSj5Lo/UbPb/zCCRKh/kAxnOaOS9oJELTVVoTg==';

建立完成後咱們能夠在存儲帳戶中建立一個container用來存儲備份文件:
備份SQL Server數據庫到Azure Storageurl

建立完成之後可使用以下T-SQL將數據庫備份到Storage Account中:日誌

DECLARE @DB_name VARCHAR(50) -- database name 

DECLARE @BackupLoc VARCHAR(256) -- path for backup files 

DECLARE @BackupfileName VARCHAR(256) -- filename for backup 

DECLARE @fileDate VARCHAR(20) -- used for file name

-- specify database backup container location

SET @BackupLoc = 'https://sql12bak.blob.core.chinacloudapi.cn/test/' 

set @fileDate= replace(replace(convert(nvarchar(50),getdate()),' ','_'),':','_')

DECLARE db_cursor CURSOR FOR 

SELECT name FROM master.sys.databases WHERE database_id <>2 and state=0

OPEN db_cursor  

FETCH NEXT FROM db_cursor INTO @DB_name  

WHILE @@FETCH_STATUS = 0  

BEGIN  

       SET @BackupfileName = @BackupLoc + @DB_name + '_' + @fileDate + '.BAK' 

       BACKUP DATABASE @DB_name TO URL = @BackupfileName  WITH CREDENTIAL = 'bkuptourl',COMPRESSION 

          print 'BACKUP DATABASE '+@DB_name+ ' TO URL ='''+ @BackupfileName  +''' WITH CREDENTIAL = ''bkuptourl'',COMPRESSION '

       FETCH NEXT FROM db_cursor INTO @DB_name  

END  

CLOSE db_cursor  

DEALLOCATE db_cursor

備份SQL Server數據庫到Azure Storage

備份完成,以下圖所示:
備份SQL Server數據庫到Azure Storagecode

相關文章
相關標籤/搜索