Freigeben über


Verwalten von SQL-Datenbanken in einer Azure-VM mithilfe der Azure CLI

Die Azure CLI dient zum Erstellen und Verwalten von Azure-Ressourcen über die Befehlszeile oder mit Skripts. In diesem Artikel wird beschrieben, wie Sie eine gesicherte SQL-Datenbank auf azure VM mit Azure CLI verwalten. Sie können diese Aktionen auch über das Azure-Portal ausführen.

Hinweis

Falls Sie die Anleitung unter Sichern einer SQL-Datenbank in Azure mit der CLI verwendet haben, um Ihre SQL-Datenbank zu sichern, nutzen Sie die folgenden Ressourcen:

  • Eine Ressourcengruppe mit dem Namen SQLResourceGroup
  • Ein Tresor mit dem Namen SQLVault
  • Geschützter Container mit dem Namen "VMAppContainer"; Berechnen; SQLResourceGroup; testSQLVM
  • Gesicherte Datenbank/Element mit dem Namen sqldatabase;mssqlserver;master
  • Ressourcen in der Region Westus2

Azure CLI erleichtert das Verwalten einer SQL-Datenbank, die auf einer Azure-VM ausgeführt wird, die mithilfe von Azure Backup gesichert wird. In den folgenden Abschnitten werden die einzelnen Verwaltungsvorgänge beschrieben.

Erfahren Sie mehr über die unterstützten Konfigurationen und Szenarien für die SQL-Sicherung.

Überwachen von Sicherungs- und Wiederherstellungsaufträgen

Verwenden Sie den Befehl "az backup job list" zum Überwachen abgeschlossener oder aktuell ausgeführter Aufträge (Sicherung oder Wiederherstellung). CLI ermöglicht auch einen aktuell ausgeführten Auftrag zu unterbrechen oder zu warten, bis ein Auftrag abgeschlossen ist.

az backup job list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --output table

Die Ausgabe erscheint wie folgt:

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

Ändern einer Richtlinie

Verwenden Sie den Befehl "az backup policy set ", um die Richtlinie zu ändern, die der SQL-Sicherungskonfiguration zugrunde liegt. Der Name-Parameter in diesem Befehl bezieht sich auf das Sicherungselement, dessen Richtlinie Sie ändern möchten. Ersetzen Sie die Richtlinie der SQL-Datenbank sqldatabase;mssqlserver;master durch die neue Richtlinie newSQLPolicy. Sie können neue Richtlinien mithilfe des Befehls "az backup policy create " erstellen.

az backup item set-policy --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name newSQLPolicy \
    --name sqldatabase;mssqlserver;master \

Die Ausgabe erscheint wie folgt:

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

Erstellen einer differenziellen Sicherungsrichtlinie

Verwenden Sie zum Erstellen einer differenziellen Sicherungsrichtlinie den Befehl "az backup policy create " mit den folgenden Parametern:

  • --backup-management-type: Azure-Workload.
  • --workload-type: SQL DataBase.
  • --name: Name der Richtlinie.
  • --policy: JSON-Datei mit den entsprechenden Details für Zeitplan und Aufbewahrung.
  • --resource-group: Ressourcengruppe des Tresors.
  • --vault-name: Name des Tresors/

Beispiel:

az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase

Beispiel-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"
} 

Nachdem die Richtlinie erfolgreich erstellt wurde, zeigt die Ausgabe des Befehls den Richtlinien-JSON-Code an, den Sie beim Ausführen des Befehls als Parameter übergeben haben.

Sie können den folgenden Abschnitt der Richtlinie ändern, um die erforderliche Sicherungshäufigkeit und Aufbewahrung für differenzielle Sicherungen anzugeben.

Beispiel:

{
  "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
  }
}

Beispiel:

Wenn Sie differenzielle Sicherungen nur am Samstag haben und sie 60 Tage lang aufbewahren möchten, führen Sie die folgenden Änderungen in der Richtlinie aus:

  • Aktualisieren Sie den retentionDuration-Wert auf 60 Tage.
  • Geben Sie nur Samstag als ScheduleRunDays an.
 {
  "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
  }
}

Schützen der neuen Datenbanken, die einer SQL-Instanz hinzugefügt wurden

Durch das Registrieren einer SQL-Instanz mit einem Recovery Services-Tresor werden automatisch alle Datenbanken in dieser Instanz ermittelt.

Wenn Sie der SQL-Instanz jedoch später neue Datenbanken hinzugefügt haben, verwenden Sie den Befehl az backup protectable-item initialize . Mit diesem Befehl werden die neuen Datenbanken ermittelt, die hinzugefügt wurden.

az backup protectable-item initialize --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --workload-type SQLDataBase

Verwenden Sie dann das az backup protectable-item list cmdlet, um alle Datenbanken aufzulisten, die in Ihrer SQL-Instanz ermittelt wurden. Diese Liste schließt jedoch die Datenbanken aus, auf denen die Sicherung bereits konfiguriert wurde. Nachdem die zu sichernde Datenbank ermittelt wurde, helfen Ihnen die Informationen unter Aktivieren der Sicherung für eine SQL-Datenbank weiter.

az backup protectable-item list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --workload-type SQLDataBase \
	--protectable-item-type SQLDataBase \
    --output table

Die neue Datenbank, die Sie sichern möchten, wird in dieser Liste angezeigt, die wie folgt angezeigt wird:

Name                            Protectable Item Type    ParentName    ServerName    IsProtected
---------------------------     ----------------------   ------------  -----------   ------------
sqldatabase;mssqlserver;db1     SQLDataBase              mssqlserver   testSQLVM	 NotProtected  
sqldatabase;mssqlserver;db2     SQLDataBase              mssqlserver   testSQLVM	 NotProtected

Beenden des Schutzes für eine SQL-Datenbank

Sie können den Schutz einer SQL-Datenbank in den folgenden Prozessen beenden:

  • Beenden aller zukünftigen Sicherungsaufträge und Löschen aller Wiederherstellungspunkte
  • Beenden aller zukünftigen Sicherungsaufträge und Beibehalten der Wiederherstellungspunkte.

Wenn Sie die Wiederherstellungspunkte verlassen möchten, beachten Sie die folgenden Details:

  • Alle Wiederherstellungspunkte werden unbegrenzt beibehalten, und die gesamte Bereinigung endet mit der Beendigung des Schutzes unter Beibehaltung der Daten.
  • Ihnen werden die geschützte Instanz und der verbrauchte Speicher in Rechnung gestellt.
  • Wenn Sie eine Datenquelle löschen, ohne die Sicherungen zu beenden, treten bei neuen Sicherungen Fehler auf.

Die Prozesse zum Beenden des Schutzes sind unten aufgeführt.

Beendigung des Schutzes mit Beibehaltung der Daten

Verwenden Sie den Befehl "az backup protection disable", um den Schutz mit der Aufbewahrung von Daten zu beenden.

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

Die Ausgabe erscheint wie folgt:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

Um den Status dieses Vorgangs zu überprüfen, verwenden Sie den Befehl "az backup job show ".

Schutz beenden, ohne Daten aufzubewahren

Verwenden Sie den Befehl "az backup protection disable ", um den Schutz ohne Aufbewahrung von Daten zu beenden.

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

Die Ausgabe erscheint wie folgt:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

Um den Status dieses Vorgangs zu überprüfen, verwenden Sie den Befehl "az backup job show ".

Schutz fortsetzen

Wenn Sie den Schutz für die SQL-Datenbank mit Aufbewahrungsdaten beenden, können Sie den Schutz später fortsetzen. Wenn Sie die gesicherten Daten nicht aufbewahren, können Sie den Schutz nicht fortsetzen.

Um den Schutz fortzusetzen, verwenden Sie den Befehl "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

Die Ausgabe erscheint wie folgt:

Name                                  ResourceGroup
------------------------------------  ---------------  
b2a7f108-1020-4529-870f-6c4c43e2bb9e  SQLResourceGroup

Um den Status dieses Vorgangs zu überprüfen, verwenden Sie den Befehl "az backup job show ".

Nächste Schritte