Azure CLI を使用して Azure VM 内の SQL データベースをバックアップする
Azure CLI は、コマンドラインやスクリプトで Azure リソースを作成および管理するために使用します。 この記事では、Azure VM で SQL データベースをバックアップし、Azure CLI を使用してオンデマンド バックアップをトリガーする方法について説明します。 これらのアクションは、Azure portal を使用して実行することもできます。
この記事は、Azure VM に SQL データベースが既にインストールされていることを前提としています。 (Azure CLI を使用して VM を作成することもできます)。
この記事では、次の方法について学習します。
- Recovery Services コンテナーを作成する
- SQL サーバーを登録し、そこでデータベースを検出する
- SQL データベースでバックアップを有効にする
- オンデマンド バックアップをトリガーする
Azure VM の SQL で現在サポートされているシナリオを参照してください。
前提条件
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
Recovery Services コンテナーを作成する
Recovery Services コンテナーは、Azure VM や Azure VM 上で実行されているワークロード (SQL や HANA データベースなど) といった各保護リソースのバックアップ データを格納する論理コンテナーです。 保護されたリソースのバックアップ ジョブを実行すると、Recovery Services コンテナー内に復元ポイントが作成されます。 この復元ポイントのいずれかを使用して、データを特定の時点に復元できます。
az backup vault create コマンドを使用して Recovery Services コンテナーを作成します。 保護する VM のものと同じリソース グループと場所を使用します。 Azure CLI を使って Windows VM と Linux VM を作成する方法について説明します。
この記事では、次のものを使用します。
- SQLResourceGroup という名前のリソース グループ
- testSQLVM という名前の VM
- westus2 の場所にあるリソース。
次のコマンドを実行して、SQLVault という名前のコンテナーを作成します。
az backup vault create --resource-group SQLResourceGroup \
--name SQLVault \
--location westus2
既定では、Recovery Services コンテナーが geo 冗長ストレージ用に設定されています。 geo 冗長ストレージでは、プライマリ リージョンから数百マイル離れていたとしても、セカンダリ Azure リージョンにバックアップ データが確実にレプリケートされます。 ストレージの冗長性設定を変更する必要がある場合は、az backup vault backup-properties set コマンドを使用します。
az backup vault backup-properties set \
--name SQLVault \
--resource-group SQLResourceGroup \
--backup-storage-redundancy "LocallyRedundant/GeoRedundant"
コンテナーが正常に作成されたかどうかを確認するには、 az backup vault list コマンドを使用します。 応答は次のように表示されます。
Location Name ResourceGroup
--------- --------------- -------------
westus2 SQLVault SQLResourceGroup
SQL Server を登録して保護する
SQL Server を Recovery Services コンテナーに登録するには、az backup container register コマンドを使用します。 VMResourceId は、SQL をインストールするために作成した VM のリソース ID です。
az backup container register --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--resource-id VMResourceId
Note
VM がコンテナーと同じリソース グループにない場合、SQLResourceGroup では、コンテナーが作成されたリソース グループが使用されます。
SQL サーバーを登録すると、現在のすべてのデータベースが自動的に検出されます。 ただし、今後追加される可能性のある新しいデータベースを検出するには、登録済み SQL サーバーに追加された新しいデータベースの検出に関するセクションを参照してください。
SQL インスタンスがコンテナーに正常に登録されているかどうかを確認するには、az backup container list コマンドを使用します。 応答は次のように表示されます。
Name Friendly Name Resource Group Type Registration Status
------------------------------------------------------ -------------- -------------------- --------- ----------------------
VMAppContainer;Compute;SQLResourceGroup;testSQLVM testSQLVM SQLResourceGroup AzureWorkload Registered
Note
上記の出力の列 name は、コンテナー名を示しています。 このコンテナー名は、次のセクションで、バックアップを有効にしてトリガーするために使用されます。 たとえば、VMAppContainer;Compute;SQLResourceGroup;testSQLVM のように指定します。
SQL データベースでバックアップを有効にする
az backup protect-item list コマンドを使うと、前の手順で登録した、SQL インスタンスで検出されたすべてのデータベースが一覧表示されます。
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--protectable-item-type SQLDataBase
--output table
バックアップ対象のデータベースがこの一覧に表示され、次のようになります。
Name Protectable Item Type ParentName ServerName IsProtected
----------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;master SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;model SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;msdb SQLDataBase MSSQLServer testSQLVM NotProtected
次に、sqldatabase;mssqlserver;master データベースのバックアップを 構成します。
データベースでバックアップを一度に 1 つずつ構成および保護するには、az backup protection enable-for-azurewl コマンドを使用します。 使用するポリシーの名前を指定します。 CLI を使用してポリシーを作成するには、az backup policy create コマンドを使用します。 この記事では、 testSQLPolicy ポリシーを使用しました。
az backup protection enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqldatabase;mssqlserver;master" \
--protectable-item-type SQLDataBase \
--server-name testSQLVM \
--workload-type SQLDataBase \
--output table
SQL Always On 可用性グループがあり、可用性グループ内の保護可能なデータソースを識別する場合は、同じコマンドを使用できます。 ここでは、保護可能な項目の種類は SQLAG です。
上記のバックアップ構成が完了したかどうかを確認するには、az backup job list コマンドを使用します。 出力は次のように表示されます。
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master 2019-12-03T03:09:210831+00:00
az backup job list コマンドを実行すると、登録、バックアップの構成、バックアップ データの削除などの他の操作に加えて、保護されたデータベース上で実行されたか、現在実行中のすべてのバックアップ ジョブ (スケジュール済みまたはオンデマンド) が一覧表示されます。
Note
Azure Backup では、Azure VM で実行されている SQL データベースをバックアップしている場合、夏時間変更に合わせた自動調整は行われません。
必要に応じて手動でポリシーを変更してください。
自動保護を有効にする
シームレスなバックアップ構成の場合、将来追加されるすべてのデータベースを特定のポリシーで自動的に保護できます。 自動保護を有効にするには、 az backup protection auto-enable-for-azurewl コマンドを使用します。
この命令では将来のすべてのデータベースがバックアップされるため、処理は SQLInstance レベルで行われます。
az backup protection auto-enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqlinstance;mssqlserver" \
--protectable-item-type SQLInstance \
--server-name testSQLVM \
--workload-type MSSQL\
--output table
オンデマンド バックアップをトリガーする
オンデマンドバックアップをトリガーするには、az backup protection backup-now コマンドを使用します。
Note
このバックアップの保持期間は、実行したオンデマンド バックアップの種類によって決まります。
- On-demand full では、バックアップが最短で "45 日間"、最大で "99 年間" 保持されます。
- On-demand copy only full では、保持するすべての値を受け入れます。
- On-demand differential では、ポリシーに設定されているスケジュールされた差分の保持に従ってバックアップが保持されます。
- On-demand log では、ポリシーに設定されているスケジュールされたログの保持に従ってバックアップが保持されます。
az backup protection backup-now --resource-group SQLResourceGroup \
--item-name sqldatabase;mssqlserver;master \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--backup-type Full
--retain-until 01-01-2040
--output table
出力は次のように表示されます。
Name ResourceGroup
------------------------------------ -------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 sqlResourceGroup
応答によってジョブ名がわかります。 このジョブ名と az backup job show コマンドを使用してジョブの状態を追跡できます。
次のステップ
- CLI を使用して Azure VM で SQL データベースを復元する方法について説明します。
- Azure portal を使用して Azure VM で実行されている SQL データベースをバックアップする方法について説明します。