Azure CLI を使用して Azure VM で SQL データベースを管理する
Azure CLI は、コマンドラインやスクリプトで Azure リソースを作成および管理するために使用します。 この記事では、Azure CLI を使用して、バックアップされた SQL データベースを Azure VM で管理する方法について説明します。 これらのアクションは、Azure portal を使用して実行することもできます。
この記事では、次の方法について学習します。
- バックアップ ジョブと復元ジョブを監視する
- SQL インスタンスに追加された新しいデータベースを保護する
- ポリシーを変更する
- 保護の停止
- Resume protection
CLI を使用して Azure の SQL データベースをバックアップする方法を使用して SQL データベースをバックアップした場合は、次のリソースを使用しています。
- SQLResourceGroup という名前のリソース グループ
- SQLVault という名前のコンテナー
- VMAppContainer;Compute;SQLResourceGroup;testSQLVM という名前の保護されたコンテナー
- sqldatabase;mssqlserver;master という名前のバックアップされたデータベース/項目
- westus2 リージョン内のリソース
Azure CLI を使用すると、Azure VM で実行されており、Azure Backupを使用してバックアップされる SQL データベースの管理プロセスが容易になります。 以下のセクションでは、各管理操作について説明します。
Note
サポートされている構成とシナリオの詳細については、SQL バックアップのサポート マトリックスに関する記事を参照してください。
バックアップ ジョブと復元ジョブを監視する
完了した、または現在実行中のジョブ (バックアップまたは復元) を監視するには、az backup job list コマンドを使用します。 CLI を使って、現在実行中のジョブを中断することや、ジョブが完了するまで待機することもできます。
az backup job list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--output table
出力は次のように表示されます。
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master [testSQLVM] 2019-12-03T03:09:210831+00:00
ccdb4dce-8b15-47c5-8c46-b0985352238f Backup (Full) Completed master [testSQLVM] 2019-12-01T10:30:58.867489+00:00
4980af91-1090-49a6-ab96-13bc905a5282 Backup (Differential) Completed master [testSQLVM] 2019-12-01T10:36:00.563909+00:00
F7c68818-039f-4a0f-8d73-e0747e68a813 Restore (Log) Completed master [testSQLVM] 2019-12-03T05:44:51.081607+00:00
ポリシーを変更する
SQL バックアップ構成の基になるポリシーを変更するには、az backup policy set コマンドを使用します。 このコマンドの name パラメーターは、ポリシーを変更するバックアップ項目を示します。 ここで、SQL データベース sqldatabase;mssqlserver;master のポリシーを新しいポリシー newSQLPolicy に置き換えます。 az backup policy create コマンドを使用して、新しいポリシーを作成できます。
az backup item set-policy --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--policy-name newSQLPolicy \
--name sqldatabase;mssqlserver;master \
出力は次のように表示されます。
Name Operation Status Item Name Backup Management Type Start Time UTC Duration
------------------------------------ --------------- --------- ----------- ------------------------ -------------------------------- --------------
ba350996-99ea-46b1-aae2-e2096c1e28cd ConfigureBackup Completed master AzureWorkload 2022-06-22T08:24:03.958001+00:00 0:01:12.435765
差分バックアップ ポリシーを作成する
差分バックアップ ポリシーを作成するには、次のパラメーターを指定して、az backup policy create コマンドを使用します。
- --backup-management-type: Azure Workload
- --workload-type: SQL DataBase
- --name: ポリシーの名前
- --policy: スケジュールと保有期間に関する適切な詳細を含む JSON ファイル
- --resource-group: コンテナーのリソース グループ
- --vault-name: コンテナーの名前
例:
az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase
サンプル JSON (sqlpolicy.json):
"eTag": null,
"id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupPolicies/SQLPolicy",
"location": null,
"name": "sqlpolicy",
"properties": {
"backupManagementType": "AzureWorkload",
"workLoadType": "SQLDataBase",
"settings": {
"timeZone": "UTC",
"issqlcompression": false,
"isCompression": false
},
"subProtectionPolicy": [
{
"policyType": "Full",
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Weekly",
"scheduleRunDays": [
"Sunday"
],
"scheduleRunTimes": [
"2022-06-13T19:30:00Z"
],
"scheduleWeeklyFrequency": 0
},
"retentionPolicy": {
"retentionPolicyType": "LongTermRetentionPolicy",
"weeklySchedule": {
"daysOfTheWeek": [
"Sunday"
],
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 104,
"durationType": "Weeks"
}
},
"monthlySchedule": {
"retentionScheduleFormatType": "Weekly",
"retentionScheduleWeekly": {
"daysOfTheWeek": [
"Sunday"
],
"weeksOfTheMonth": [
"First"
]
},
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 60,
"durationType": "Months"
}
},
"yearlySchedule": {
"retentionScheduleFormatType": "Weekly",
"monthsOfYear": [
"January"
],
"retentionScheduleWeekly": {
"daysOfTheWeek": [
"Sunday"
],
"weeksOfTheMonth": [
"First"
]
},
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 10,
"durationType": "Years"
}
}
}
},
{
"policyType": "Differential",
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Weekly",
"scheduleRunDays": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"scheduleRunTimes": [
"2022-06-13T02:00:00Z"
],
"scheduleWeeklyFrequency": 0
},
"retentionPolicy": {
"retentionPolicyType": "SimpleRetentionPolicy",
"retentionDuration": {
"count": 30,
"durationType": "Days"
}
}
},
{
"policyType": "Log",
"schedulePolicy": {
"schedulePolicyType": "LogSchedulePolicy",
"scheduleFrequencyInMins": 120
},
"retentionPolicy": {
"retentionPolicyType": "SimpleRetentionPolicy",
"retentionDuration": {
"count": 15,
"durationType": "Days"
}
}
}
],
"protectedItemsCount": 0
},
"resourceGroup": "SQLResourceGroup",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupPolicies"
}
ポリシーが正常に作成されると、コマンドの出力は、コマンドの実行中にパラメーターとして渡したポリシーの JSON を示します。
ポリシーの次のセクションを変更して、差分バックアップに必要なバックアップの頻度と保有期間を指定できます。
次に例を示します。
{
"policyType": "Differential",
"retentionPolicy": {
"retentionDuration": {
"count": 30,
"durationType": "Days"
},
"retentionPolicyType": "SimpleRetentionPolicy"
},
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunDays": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"scheduleRunFrequency": "Weekly",
"scheduleRunTimes": [
"2017-03-07T02:00:00+00:00"
],
"scheduleWeeklyFrequency": 0
}
}
例:
土曜日にのみ差分バックアップを作成し、それらを 60 日間保持する場合は、ポリシーに次の変更を行います。
- retentionDuration の count を 60 日に更新します。
- ScheduleRunDays として Saturday のみを指定します。
{
"policyType": "Differential",
"retentionPolicy": {
"retentionDuration": {
"count": 60,
"durationType": "Days"
},
"retentionPolicyType": "SimpleRetentionPolicy"
},
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunDays": [
"Saturday"
],
"scheduleRunFrequency": "Weekly",
"scheduleRunTimes": [
"2017-03-07T02:00:00+00:00"
],
"scheduleWeeklyFrequency": 0
}
}
SQL インスタンスに追加された新しいデータベースを保護する
Recovery Services コンテナーに SQL インスタンスを登録すると、このインスタンス内のすべてのデータベースが自動的に検出されます。
ただし、新しいデータベースを SQL インスタンスに後で追加した場合は、az backup protectable-item initialize コマンドを使用します。 このコマンドによって、追加された新しいデータベースが検出されます。
az backup protectable-item initialize --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--workload-type SQLDataBase
次に、az backup protectable-item list コマンドレットを使用して、SQL インスタンス上で検出されたすべてのデータベースを一覧表示します。 ただし、この一覧には、バックアップが既に構成されているデータベースは含まれません。 バックアップするデータベースが検出されたら、SQL データベースでのバックアップの有効化に関するページを参照してください。
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--protectable-item-type SQLDataBase \
--output table
次のように、バックアップする新しいデータベースがこの一覧に表示されます。
Name Protectable Item Type ParentName ServerName IsProtected
--------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;db1 SQLDataBase mssqlserver testSQLVM NotProtected
sqldatabase;mssqlserver;db2 SQLDataBase mssqlserver testSQLVM NotProtected
SQL データベースの保護を停止する
次のプロセスで、SQL データベースの保護を停止できます。
- 今後のバックアップ ジョブすべてを停止し、すべての復旧ポイントを削除する。
- 今後のすべてのバックアップ ジョブを停止し、復旧ポイントはそのままにする。
復旧ポイントをそのままにする場合、以下の項目を念頭に置いてください。
- データを保持して保護を停止すると、すべての復旧ポイントは永久に変更されず、すべての排除は停止します。
- 保護されたインスタンスと使用されたストレージに対して課金されます。
- バックアップを停止しないでデータ ソースを削除すると、新しいバックアップは失敗します。
保護を停止するプロセスの詳細は次のとおりです。
データを保持して保護を停止
データを保持して保護を停止するには、az backup protection disable` コマンドを使用します。
az backup protection disable --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--workload-type SQLDataBase \
--output table
出力は次のように表示されます。
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
この操作の状態を確認するには、az backup job show コマンドを使用します。
データを保持せずに保護を停止する
データを保持せずに保護を停止するには、az backup protection disable コマンドを使用します。
az backup protection disable --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--workload-type SQLDataBase \
--delete-backup-data true \
--output table
出力は次のように表示されます。
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
この操作の状態を確認するには、az backup job show コマンドを使用します。
Resume protection
データを保持して SQL データベースの保護を停止すると、後で保護を再開できます。 バックアップされたデータを保持しない場合は、保護を再開できなくなります。
保護を再開するには、az backup protection resume コマンドを使用します。
az backup protection resume --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--policy-name SQLPolicy \
--output table
出力は次のように表示されます。
Name ResourceGroup
------------------------------------ ---------------
b2a7f108-1020-4529-870f-6c4c43e2bb9e SQLResourceGroup
この操作の状態を確認するには、az backup job show コマンドを使用します。