Windows Azure SQL データベースのバックアップとAzCopy


(2013/08/12時点で)Windows Azure SQL データベースでは SQL Serverのバックアップ・復元機能 が使えません。これはマルチテナントの環境では暫く難しいのかもしれませんね。Windows Azure SQL データベース プレミアムに期待でしょうか。

そもそもSQLデータベースは 1 つのデータセンター内の 3 つの異なる物理コンピューターに 3 つのレプリカ (1 つのプライマリ レプリカと 2 つのセカンダリ レプリカ) を持っているため物理的障害などでデータが消えてしまったり、リカバリが必要になるケースはオンプレと比べると非常に少ないでしょう。また、何らかの致命的な障害に備えてデータ センター内のすべてのデータベースについて、過去 14 日間のデータの内部コピーが自動的に維持されます。(内部コピーをユーザーが操作することは出来ません)

IC567941

 

システム要件によってはこれで十分かもしれませんが、エンドユーザーのミスや意図しない操作などでデータが破損してしまう可能性を考慮して過去データを保持しておきたいといったニーズもあると思います。

そこで、SQL データベースではSQL Serverとは異なるバックアップ手法が提供されています。ただし、SQL Serverを利用されている方からすると機能が若干貧弱です。(差分バックアップなどとれません)

Windows Azure SQL データベースのバックアップと復元

http://msdn.microsoft.com/ja-jp/library/windowsazure/jj650016.aspx

データベース コピーを作成してから BACPAC ファイルをエクスポートすると、トランザクションに一貫性があるデータベースのバックアップ ファイルが得られます。このファイルは移植可能で、Windows Azure ストレージにも、内部環境にも格納できます。その後、このファイルは、ロールバック プランに使用して、ユーザー エラーやアプリケーション エラー、または地域全体の機能の損失からデータを保護できます。

データベースからBACPACファイルを直接エクスポートすることもできますが一貫性が保証されません。そのため事前にデータベースコピーを実行しておいて、そこからエクスポートを行う手法が推奨となります。ただし、決まった時間(例えば夜間など)にトランザクションが発生しないシステムであればデータベースコピーを実行しないで直接BACPACファイルのエクスポートを実行してもよいでしょう。(エクスポートにかかる間を考慮してください)

 

データベースコピー関連のコマンド

・データベースのコピー

  1: CREATE DATABASE コピー先DB AS COPY OF コピー元DB

 

 

・データベースコピーの監視

  1:  SELECT name, state, state_desc FROM sys.databases WHERE name = 'コピー先DB' 

 

BACPACファイルのエクスポート

エクスポート方法はいろいろとあるのでまとめておきます。

 

Windows Azure 管理ポータルからエクスポート

管理ポータルでSQLデータベースのDBを選択すると、Windows AzureのBLOBストレージにbacpacファイルを直接保存することが出来ます。これが一番簡単な方法でしょう。

bacpac1

 

Windows Azure 管理ポータルから自動エクスポート

管理ポータルでSQLデータベースのDBを選択し、構成タブをクリックすると自動エクスポートの設定が出来ます。この機能では指定した頻度で定期的にbacpacファイルをWindows AzureのBLOBストレージに保存することが出来ます。

bacpac3

 

SQL Server Management Studioから「データ層アプリケーションのエクスポート」

SSMSでSQLデータベースに接続してコンテキストメニューの「データ層アプリケーションのエクスポート」を実行すると、ウィザード形式でローカル、もしくはWindows AzureのBLOBストレージにbacpacファイルを保存することが出来ます。

bacpac2

 

データ層アプリケーション フレームワーク (DACFx) クライアント ツール( sqlpackage.exe )を利用

クライアントツール(C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe)を利用してbacpacファイルをローカルディスクに保存することができます。(BLOBに直接保存できません)

  1: sqlpackage.exe /a:Export 
  2: /ssn:”yourserver.database.windows.net” 
  3: /sdn:"your database to export" 
  4: /su:"yourdbuser" 
  5: /sp:"your password" 
  6: /tf:"bacpac file to create on local disk"

 

アプリを作る(.NET)

エクスポートからBLOBストレージへ保存の一連の流れをC#で実装するとができます。

DAC Framework Direct Community Sample Application

http://code.msdn.microsoft.com/windowsazure/DAC-Framework-Direct-77af5c98

Windows Azure SQL データベースのバックアップの自動化

http://msdn.microsoft.com/ja-jp/library/windowsazure/jj900675.aspx

 

 

AzCopyで BLOBストレージのデータをコピー

AzCopyを利用するとストレージアカウントをまたがってBLOBストレージのデータをコピーしたり、ローカルディスクのデータをBLOBストレージにコピーすることができます。

  1: AzCopy https://<sourceaccount>.blob.core.windows.net/<sourcecontainer>/
  2: https://<destaccount>.blob.core.windows.net/<destcontainer>/  
  3: /sourcekey:<key> /destkey:<key> /S

 

使い方は佐々木さんをブログも参考にしてください。

http://blogs.technet.com/b/ksasaki/archive/2012/11/09/azcopy-blob.aspx

Comments (0)

Skip to main content