不可抗力からのAzure SQL Databaseのデータ消失を防ぐ方法

SQL Azureと呼ばれていたWindows Azure SQL Databaseのサービス内容合意書(SLA)では、マイクロソフトが管理できない外的要因からのデータ消失への対応は例外扱いにしています。
外的要因とは、戦争や空爆、暴動、犯罪もしくは、地震や噴火、洪水のような自然災害などです。
これらによりデータセンターがダメージを受け、レプリカやオンサイトバックアップからデータをリカバリできなくなることがあります。
現在、Windows Azure SQL Databaseはオフサイトバックアップを取得していません。

SQL Database チームは、SQL Databaseでのビジネス継続性の維持に関する素晴らしいガイドラインを提供しています。

この投稿では、他のリージョンにあるWindows Azureデータセンターで稼働しているWindows Azure SQL Databaseにオフサイトバックアップを簡単に取得する方法について説明します。
Windows Azureポータルを使用して、データ層アプリケーションロジカルバックアップ(BACPAC)を他のデータセンターにあるWindows Azure Storageへエクスポートします。

Windows Azure SQL Databaseのコピー作成

BACPACは論理バックアップで、トランザクションは考慮されません。
ユーザーがデータベースに書き込みをしている際にBACPACを取得すると、BACPACはデータ不整合が発生する可能性があります。たとえば、外部参照キーの不整合などがありえます。
そのため、最初にデータベースのコピー(Windows Azure SQL Database Copy)を作成し、作成したデータベースのコピーからエクスポートを実行する必要があります。
データベースのコピーはトランザクションが考慮されます。

  1. SQL Server Management Studioを使用してWindows Azure SQL Databaseに接続します
  2. オブジェクトエクスプローラーでエクスポートしたいデータベースを選択し、
    右クリックから「新しいクエリ」を選択します。
  3. クエリウィンドウで次のクエリを入力します。
    CREATE DATABASE <destination_database_name> AS COPY OF <source_database_name>
  4. このコマンドを実行すると、すぐに結果が返ってきます。
    しかし、Windows Azure SQL Databaseはバックグラウンドでコピーを処理しています。
    コピーの実行上状況は、sys.dm_database_copiessys.databasesビューでモニタリングすることができます。
  5. コピーが完了したら、コピーしたデータベースからBACPACを作成します。
    コピーしたデータベースには、INSERTやUPDATE、DELETEは実行しないように注意してください。

データベースコピーについては、「データベース・コピーを使用してSQL Azureデータベースをバックアップする」も参照してください。

Windows Azureポータルを使用したBACPACファイルの作成

Windows Azureポータルを使用すると、Windows Azure SQL Databaseから直接Windows Azure Storage BlobにBACPACファイルを出力することができます。

出力方法については、「管理ポータルからSQL Azureデータベースのインポート/エクスポート」を参照してください。

情報源

Prevent Data Loss from Force Majeure」をざっくりと大胆にまとめた記事です。