Azure SQL Database のバックアップについて

Azure SQL Database (サーバーではないので注意) のバックアップ方法は、主に以下。

  1. Azure ポータルでのコピー (Azure SQL サーバーへの Database のコピー)
  2. Azure ポータルでのエクスポート (Azure ストレージへの BACPAC ファイルの保存)
  3. SSMS でのエクスポート (ローカルへの BACPAC ファイルの保存)
  4. ビルトインの自動バックアップ (Azure 側で常に自動バックアップされている)

Azure ポータルでのコピー

Azure ポータルで当該 SQL Database リソースを表示し、[概要] 画面の [コピー] メニューから、Azure SQL サーバーへのデータベースのコピーを行う。 バックアップとはまた少し違うが、対象データベースを基にした別データベースを作成するのであれば、この方法が一番手間がない。

後述するように Azure ポータルでのエクスポート作業時は Azure IP がファイアウォールで許可されている必要があるが、コピー操作ではそのような制限はない様子。 また、エクスポートでは 15 分前後かかるデータベースも、コピーだと数分で済むので、そういう意味でもコピーはお手軽。

コピー先データベースのリソースグループや価格レベルはコピー元と同じ設定となるが、どちらもコピー完了後に変更出来るので、特に問題はないはず。 (リソースグループの変更は、当該 SQL Database が格納されている SQL サーバーごと行う必要がある)

Azure ポータルでのエクスポート

Azure ポータルで当該 SQL Database リソースを表示し、[概要] 画面の [エクスポート] メニューから、BACPAC ファイルの Azure ストレージへのエクスポートを行う。 事前にエクスポート先の Azure ストレージアカウントを用意しておく必要があるので、注意。 後述する SSMS のようにクライアント端末に SSMS をインストールする必要もなく、Azure ポータルだけで操作完了できるが、ファイアウォール設定で Azure の IP が許可されている必要があるようなので、その点だけ注意。

また、エクスポート処理にはほとんど使用していないような状態のデータベースでも 15 分前後かかり、DTU も 100% 使ったりするので、この点も注意。 公式ドキュメントでは、エクスポート操作が 20 時間を超える場合は処理がキャンセルされるので、エクスポート操作時だけコンピューティングサイズを増やして処理時間を短くするような方法も記載されているので、DB 的にかなり負荷がかかる処理の様子。

エクスポート状況は当該データベースの画面ではなく、当該データベースが格納されている SQL サーバーの画面から確認できる。

SSMS でのエクスポート

Azure ポータルでのエクスポートの、ローカル版。 SQL Server Management Studio (SSMS) で対象 DB に接続後、対象 Database を右クリックし、コンテキストメニューから [タスク] - [データ層アプリケーションのエクスポート] をクリックする。 格納しているデータがほとんどなくても、エクスポート処理には 15 分前後かかるので、注意。

ビルトインの自動バックアップ

Azure SQL Database は Azure 側の仕組みで常に自動バックアップされている。Basic プランでも直近一週間以内であれば任意の日時の時点を指定して復帰可能。 コピーやエクスポートについて上述したが、自動バックアップの期間内の状態に戻せれば良いのであれば、実質的に明示的なバックアップは不要となる。