Share via


Verwalten von SQL-Datenbanken in einer Azure-VM über die 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 mit der Azure CLI eine gesicherte SQL-Datenbank auf einer Azure-VM verwalten. Sie können diese Schritte auch im Azure-Portal ausführen.

In diesem Artikel lernen Sie Folgendes:

  • Überwachen von Sicherungs- und Wiederherstellungsaufträgen
  • Schützen neuer Datenbanken, die einer SQL-Instanz hinzugefügt wurden
  • Ändern der Richtlinie
  • Schutz beenden
  • Schutz fortsetzen

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 namens SQLResourceGroup
  • Einen Tresor namens SQLVault
  • Einen geschützten Container namens VMAppContainer;Compute;SQLResourceGroup;testSQLVM
  • Eine gesicherte Datenbank und ein Element namens sqldatabase;mssqlserver;master
  • Ressourcen in der Region westus2

Die Azure CLI vereinfacht die Verwaltung einer in einer Azure-VM ausgeführten SQL-Datenbank, die mit Azure Backup gesichert wurde. In den folgenden Abschnitten werden die einzelnen Verwaltungsvorgänge beschrieben.

Hinweis

Weitere Informationen zu den unterstützten Konfigurationen und Szenarien finden Sie in der Supportmatrix für SQL-Backups.

Überwachen von Sicherungs- und Wiederherstellungsaufträgen

Verwenden Sie den Befehl az backup job list, um abgeschlossene oder derzeit ausgeführte Aufträge (Sicherung oder Wiederherstellung) zu überwachen. Mit der CLI haben Sie auch die Möglichkeit, einen ausgeführten Auftrag anzuhalten oder den Abschluss eines Auftrags abzuwarten.

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

Die Ausgabe sieht wie folgt aus:

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. Mit dem Parameter „name“ in diesem Befehl wird auf das Sicherungselement verwiesen, dessen Richtlinie wir ändern möchten. Ersetzen Sie hier 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 sieht wie folgt aus:

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 Richtlinie für differenzielle Sicherungen

Führen Sie zum Erstellen einer Richtlinie für differenzielle Sicherungen den Befehl az backup policy create mit den folgenden Parametern aus:

  • --backup-management-type: Azure-Workload.
  • --workload-type: SQL-Datenbank.
  • --name: Name der Richtlinie.
  • --policy: JSON-Datei mit den entsprechenden Details zu 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

JSON-Beispieldatei (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"
} 

Nach Erstellung der Richtlinie wird in der Ausgabe des Befehls die JSON-Richtlinie gezeigt, die 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 die Aufbewahrungsdauer 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 ausführen und 60 Tage aufbewahren möchten, nehmen Sie die folgenden Änderungen an der Richtlinie vor:

  • Ändern Sie den Zähler retentionDuration in 60 Tage.
  • Geben Sie für ScheduleRunDays nur Samstag 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

Beim Registrieren einer SQL-Instanz bei einem Recovery Services-Tresor werden alle Datenbanken dieser Instanz automatisch ermittelt.

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

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

Verwenden Sie anschließend das Cmdlet az backup protectable-item list, um alle Datenbanken aufzulisten, die für Ihre SQL-Instanz ermittelt wurden. In dieser Liste sind aber nicht die Datenbanken enthalten, für die 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 aussieht:

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 beibehalten, sollten Sie folgende Details beachten:

  • 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 zu beenden und die Daten beizubehalten.

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 sieht wie folgt aus:

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

Verwenden Sie den Befehl az backup job show, um den Status dieses Vorgangs zu überprüfen.

Beendigung des Schutzes ohne Beibehaltung der Daten

Verwenden Sie den Befehl az backup protection disable, um den Schutz zu beenden und die Daten nicht beizubehalten.

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 sieht wie folgt aus:

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

Verwenden Sie den Befehl az backup job show, um den Status dieses Vorgangs zu überprüfen.

Schutz fortsetzen

Wenn Sie den Schutz für die SQL-Datenbank mit Beibehaltung der Daten beenden, können Sie ihn später wieder aktivieren bzw. fortsetzen. Sie können den Schutz nicht fortsetzen, wenn Sie die gesicherten Daten nicht beibehalten.

Verwenden Sie den Befehl az backup protection resume, um den Schutz fortzusetzen.

az backup protection resume --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name SQLPolicy \
    --output table

Die Ausgabe sieht wie folgt aus:

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

Verwenden Sie den Befehl az backup job show, um den Status dieses Vorgangs zu überprüfen.

Nächste Schritte