SQL Serverから直接AzureのBlobへのバックアップと、リストアを行ってみました。
この機能はSQL Server 2012 CU2から実装された機能で、TSQLから直接BLOBのURLを指定してSQL Serverのバックアップを取得できます。
TSQL文
手元のSQL Server 2012 CU11でもGUIからは実行できなそうなので、TSQL書く必要があります。
と言ってもとても簡単です。バックアップに関してはこのような感じで書きます。
CREATE CREDENTIAL mycredential WITH IDENTITY= 'ストレージアカウント名' ,SECRET = 'アクセスキー'; BACKUP DATABASE [DB名] TO URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/XXXXXXX.BAK' WITH CREDENTIAL = 'mycredential', FORMAT, STATS = 5; GO
最初にAzureから取得したストレージアクセス情報を使ってCredentialを作って、後はバックアップ先としてBLOBオブジェクトを指定するだけです。
LOGバックアップの時も通常通り、BACKUP LOG [DB名]と書けます。
リストアの場合のサンプルはこちらです。リストア時にファイルの配置を変更する場合に、RESTORE FILELISTONLYを事前に実行しますが、その場合もCREDENTIALが必要になります。
CREATE CREDENTIAL mycredential WITH IDENTITY= 'ストレージアカウント名' ,SECRET = 'アクセスキー'; RESTORE FILELISTONLY FROM URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/XXXXXXX.BAK' WITH CREDENTIAL = 'mycredential'; RESTORE DATABASE [PE1] FROM URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/XXXXXXX.BAK' WITH MOVE '論理データファイル1' TO 'C:\DATA\XXX.MDF', MOVE '論理データファイル2' TO 'C:\DATA\XXX.NDF', MOVE '論理ログファイル1' TO 'C:\LOG\XXX.LDF', CREDENTIAL = 'mycredential', STATS = 5; GO
上記は基本的な書き方ですが、他のオプションや詳しい書き方などはこちらのリンクに纏まっています。
Windows Azure BLOB ストレージ サービスを使用した SQL Server のバックアップと復元
実際に実行してみて(バックアップ)
オンプレミス環境からAzureへインターネット回線越しにバックアップしています。
データはSAP ERP 6.0 EHP7にベストプラクティスをいくつか有効化したものです。
ソースDB
Total Space Usage | 83,538.69 |
---|---|
Transaction Log Space Usage | 3,138.69 MB |
Data Files Space Usage | 80,400.00 MB |
バックアップ時間
1:02:20
BACKUP DATABASE successfully processed 4606699 pages in 3736.645 seconds (9.631 MB/sec).
BLOBオブジェクト(バックアップファイル)のサイズ
35.15 GB(Azure Portalから確認)
この結果から単純に計算すると1TBのDBだと10時間以上かかることになりますので、大きなDBの場合は少し工夫が必要だと思います。