Share via


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 のものと同じリソース グループと場所を使用します。 この VM のクイックスタートでは、Azure CLI を使用して 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 コマンドを使用してジョブの状態を追跡できます。

次のステップ