Azure VM にある MS SQL Server バックアップ方法まとめ

こんにちは、駆け出しアーキテクトのやまぱんです。

今回は Azure VM に構築したMS SQL Server のバックアップ手法ってどういう選択肢があるのかをまとめてみました。
詳細については各種リンクをたどって確認してもらえればと思います。
なにかあればぜひコメントください！


比較的下記の 公式のMS Docs がまとまってると思います。このDocsの内容を補足できればと思います。
この記事にあって下記に記載がないのは Azure VM バックアップを使った手法になります。

・Azure VM における SQL Server のバックアップと復元
https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/backup-restore?view=azuresql#automated


## なにを使うか
サポートマトリックスを確認のうえ、要件に合うか、各種メリット・デメリットを把握したうえで選択していただくのがよいかと思います。
個人的にはせっかく Azure 上にあるんだから、マネージドなバックアップソリューションが使えるのであれば使うのがいいんじゃないかと思います。

結論からいうと大きく下記の４種類があります。

**[MS SQL の機能 / Azure 外の機能]**
 * [MS SQL Server の機能を使ったバックアップ (手動バックアップ / MS SQLのネイティブバックアップ)](https://qiita.com/aktsmm/items/80ea42054371ce9217a0#ms-sql-server-%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97-%E6%89%8B%E5%8B%95%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97--ms-sql%E3%81%AE%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97)

**[Azure の機能]**
 * [Azure VM のSQL 拡張機能を使ったバックアップ(自動バックアップ)](https://qiita.com/aktsmm/items/80ea42054371ce9217a0#azure-vm-%E3%81%AEsql-%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%87%AA%E5%8B%95%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97)
 * [Azure Backup の Azure VM バックアップ (Azure VM バックアップ)](https://qiita.com/aktsmm/items/80ea42054371ce9217a0#azure-backup-%E3%81%AE-azure-vm-%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97-azure-vm-%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97)

* [Azure Backup の Azure SQL DB バックアップ (Azure Backup for SQL DB in Azure VM)](https://qiita.com/aktsmm/items/80ea42054371ce9217a0#azure-backup-%E3%81%AE-azure-sql-db-%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97-azure-backup-for-sql-db-in-azure-vm)


## MS SQL の機能 / Azure 外の機能
### MS SQL Server の機能を使ったバックアップ (手動バックアップ / MS SQLのネイティブバックアップ)
私はMSSQL ネイティブなバックアップと呼んだり、手動バックアップと呼んだりしています。
一番カスタマイズ性が高く保存先も自由に選べることが最大のメリットだと思います。
 バックアップデータの保存先はAzure であればマネージドディスクに保存したり、ストレージ アカウントに保存したりといった選択肢があるかと思います。
そのためバックアップデータの冗長性は保存先に依存します。


・SQL Server バックアップを直接 Azure Blob Storage へ作成する方法について
https://www.nobtak.com/entry/azbackup0


・手動バックアップ
https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/backup-restore?view=azuresql#manual

・クイックスタート: Azure Blob Storage への SQL のバックアップと復元
https://learn.microsoft.com/ja-jp/sql/relational-databases/tutorial-sql-server-backup-and-restore-to-azure-blob-storage-service?view=sql-server-ver16&tabs=SSMS

・ネットワーク ファイル システム (NFS) 3.0 プロトコルを使用して Blob Storage をマウントする
https://learn.microsoft.com/ja-jp/azure/storage/blobs/network-file-system-protocol-support-how-to


## Azure の機能

### Azure VM のSQL 拡張機能を使ったバックアップ(自動バックアップ)
Azure VM エージェントの拡張機能であるSQL拡張機能を使ったバックアップです。
"Azure Portal"  → "SQL 仮想マシン" → "バックアップ" から設定することができます。
Azure VM が起動し、SQL 拡張機能(agent)が正常に動作していることが前提です、そうでない場合はグレーアウトして設定できません。
ログバックアップの最高頻度は 5 分間隔です。
**比較的構成が容易**です。

*Azure Market Place からデプロイしたMS SQL Server の入ったイメージであれば最初から SQL 拡張機能がインストールされています。

バックアップデータの保存先は選択したストレージ アカウントになります。

ご参考までに設定画面のスナップショットです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/d2b672f5-e880-360f-04e2-54091ccb5016.png)



・Azure Virtual Machines の自動バックアップ (Resource Manager)
https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql

・自動バックアップ
https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/backup-restore?view=azuresql#automated

・SQL IaaS Agent 拡張機能への自動登録
https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/sql-agent-extension-automatic-registration-all-vms


・Windows SQL Server IaaS Agent 拡張機能を使用して管理を自動化する
https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/sql-server-iaas-agent-extension-automate-management?view=azuresql&tabs=azure-portal


### Azure Backup の Azure VM バックアップ (Azure VM バックアップ)
Azure Backup サービスの1つ、もはや一番有名な？ Azure VM BackupでSQL DB も含めて取得する方法です。
こちらも**比較的構成が容易です。**
Azure VM Backup で保護している場合はそれで SQL DB も保護されるので、要件に合う場合はAzure VM Backupだけでもよいパターンがあります。

あくまで、Azure VM のバックアップであり、SQL DB に特化したバックアップではありません。
そのため、リストアは Azure VM 単位(またはディスク単位) のリストアとなりますし、ログバックアップはできません。

また、他の バックアップ方法に比べるとRPO が緩いですが、これで要件を満たせる場合は通信要件も気にする必要がなく(Azure VM では必須の通信先の 168.63.129.16 への通信のみ)設定も容易かと思います。
保存先はAzure Backup の専用ストレージ(Recovery Services コンテナー) になります。

バックアップアイテムはRecovery Services コンテナーから確認・管理可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/159eec34-fe9d-b250-aaf0-4a776ae41dbe.png)


下記私が以前に投稿したMSサポートの公式ブログです。
・SQL Server のインストールされた Windows OS のバックアップについて
https://jpabrs-scem.github.io/blog/AzureVMBackup/Consistencies/#1-2

またよくハマる例として、共有ディスクやCSVは執筆時時点で Not Support です。
・VM ストレージのサポート - Azure VM バックアップのサポート マトリックス
https://learn.microsoft.com/ja-jp/azure/backup/backup-support-matrix-iaas#vm-storage-support

### Azure Backup の Azure SQL DB バックアップ (Azure Backup for SQL DB in Azure VM)
こちら既出の Azure Backup ソリューションの中の SQL DB in Azure VM のバックアップです。
Azure Backup の SQL ワークロードバックアップなどと呼んだりします。
**比較的構成が複雑です。**
マネージドバックアップでバックアップ比較的高機能です。
保持期間は最大99年まで設定可能です。

例えば下記のようなものがあります。(後述のURL先に記載されています。)

+ 15 分の復旧ポイント目標 (RPO) :SQL トランザクション ログのバックアップを最大 15 分ごとに構成できます。
+ ポイントインタイム リストア:ポータルを使用して、データベースを特定の時点に復元できます。複数の完全バックアップ、差分バックアップ、およびログ バックアップを手動で復元する必要はありません。

保存先はAzure Backup の専用ストレージ(Recovery Services コンテナー) になります。

復元オプションはこちらをご覧ください。
クロスリージョン リストアや異なるAzure VM にもリストアなども可能です。
・Azure VM 上の SQL Server データベースを復元する
https://learn.microsoft.com/ja-jp/azure/backup/restore-sql-database-azure-vm

バックアップアイテムはRecovery Services コンテナーから確認・管理可能です。
(この環境では構成していませんので 0 になってます。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/93ae64bd-3ac8-61f3-82ab-70c59e31e3ec.png)


またプロキシ環境下での設定はひと手間必要です。
・SQL Server DB に対する Azure Backupを、Proxy Serverをバイパスして PE 経由でバックアップする場合の設定
https://jpabrs-scem.github.io/blog/AzureSQLBackup/How_to_PE_SQL_backup_bypass_proxy/

+ その他
・SQL VM の Azure Backup
https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/backup-restore?view=azuresql#azbackup

・Azure VM での SQL Server Backup について
https://learn.microsoft.com/ja-jp/azure/backup/backup-azure-sql-database

・Azure VM 内の SQL Server のバックアップに関するサポート マトリックス
https://learn.microsoft.com/ja-jp/azure/backup/sql-support-matrix

・SQL Server のバックアップの種類
https://learn.microsoft.com/ja-jp/azure/backup/backup-architecture#sql-server-backup-types

・ネットワーク接続を確立する
https://learn.microsoft.com/ja-jp/azure/backup/backup-sql-server-database-azure-vms#establish-network-connectivity