SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2016 CTP 2.0 の Backup to Microsoft Azure を使ってみる

leave a comment

この機能自体は SQL Server 2012 SP1 CU2 から追加された機能ですが、SQL Server 2016 では機能強化が入っていますので軽く試してみました。

詳細については、 Backup to Microsoft Azure / SQL Server Backup to URL / BACKUP (Transact-SQL) が参考になります。

SQL Server 2012 SP1 CU2 で追加された際のこの機能の特徴としては、

  • ページ BLOB としてバックアップを取得
  • 複数のバックアップファイルにストライプして取得ができない
  • バックアップの最大サイズは 1TB

という点がありました。

Windows Azure BLOB ストレージ サービスを使用した SQL Server のバックアップと復元

SQL Server 2016 ではこの機能が拡張され

  • ブロック BLOB としてバックアップを取得
  • 複数のバックアップファイルにストライプして取得ができる (各ファイルは 200GB)
  • バックアップの最大サイズは最大で 12.8TB

というように Azure ストレージの BLOB の種類が変わることで、ストライプしての取得やバックアップの最大サイズの上昇が行われています。

SQL Server 2014 までは、

  • CREATE CREDENTIAL で Azure ストレージの接続に使用する資格情報を作成
  • BACKUP DATABASE で TO URL を使用してバックアップを取得する際に、WITH CREDENTIAL を使用する

という取得の方法でした。

クエリで取得する場合は、以下のようになります。

CREATE CREDENTIAL [<資格情報名>] 
WITH IDENTITY = '<ストレージアカウント名>',
SECRET = '<ストレージアカウントキー>'
GO

BACKUP DATABASE TEST 
TO URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナ名>/<バックアップファイル名>'
WITH CREDENTIAL = '<資格情報名>' ,COMPRESSION, STATS = 5


これにより、以下のようにページ BLOB としてバックアップが取得されます。

image

SQL Server 2016 では、ブロック BLOB としてバックアップが取得できるようになりましたが、この場合は手順が変わってきます。

  • CREATE CREDENTIAL で SAS (Shared Access Signature) トークンを使用した資格情報を作成
  • BACKUP DATABASE で TO URL を使用してバックアップを取得する際に、WITH CREDENTIAL を使用しない

というような手順で行います。

SQL Server Backup and Restore with Microsoft Azure Blob Storage Service

SAS を使用した資格情報の作成は、SQL Server 2014 で追加された、Azure ストレージに直接データベースを配置する方法で使っていたものと同じです。

Simplifying creation of SQL Credentials with Shared Access Signature ( SAS ) tokens on Azure Storage with Powershell

[SQL Server 2014 CTP2]Azure 連携の強化

以下のような SQL で SAS トークンを使用した資格情報を作成します。

CREATE CREDENTIAL [https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>]
WITH IDENTITY='SHARED ACCESS SIGNATURE', -- IDENTITY は固定
SECRET = '<sv= ~の SAS トークン>' 

SAS トークンは Azure Storage Explorer 等で作れますので、こちらから作成すると簡単かと。

# Permission については「SAS URL for it with full permissions」とのことなので、すべて有効にしています。

image

これで、準備は完了です。

資格情報として指定した URL へのバックアップ取得時には、自動的にこの資格情報が、使用されますので、WITH CRECENTIAL を省略して以下のような取得が可能となります。

BACKUP DATABASE TEST 
TO URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/test_01_blockblob.bak',  
   URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/test_02_blockblob.bak'
WITH COMPRESSION, STATS = 5

 

これにより、以下のように複数のファイルにストライプしてブロック BLOB としてバックアップが取得可能です。

image

バックアップサイズが大きくなってきた場合、複数のファイルにストライプして書き込みを行ったほうが、速度が速くなる傾向がありますので、今後はこちらが主流となってくるのでしょうかね。

Written by masayuki.ozawa

5月 31st, 2015 at 12:10 pm

Leave a Reply

*