Durchführen einer Zeitpunktwiederherstellung

Verwenden Sie die Zeitpunktwiederherstellung (Point-in-Time Restore, PITR), um eine Datenbank als Kopie einer anderen Datenbank zu einem Zeitpunkt in der Vergangenheit zu erstellen, der innerhalb des Aufbewahrungszeitraums liegt. In diesem Artikel erfahren Sie, wie Sie eine Zeitpunktwiederherstellung einer Datenbank in SQL Managed Instance mit Azure Arc-Unterstützung durchführen.

Mit der Point-in-Time-Wiederherstellung kann eine Datenbank wiederhergestellt werden:

  • Von einer bestehenden Datenbank
  • In eine neue Datenbank auf derselben SQL Managed Instance mit Azure Arc-Unterstützung

Sie können eine Datenbank zu einem bestimmten Zeitpunkt innerhalb einer vorkonfigurierten Aufbewahrungseinstellung wiederherstellen. Sie können die Aufbewahrungseinstellung für eine SQL Managed Instance mit Azure Arc-Unterstützung wie folgt überprüfen:

Für den Konnektivitätsmodus Direkt:

az sql mi-arc show --name <SQL instance name> --resource-group <resource-group>
#Example
az sql mi-arc show --name sqlmi --resource-group myresourcegroup

Für den Konnektivitätsmodus Indirekt:

az sql mi-arc show --name <SQL instance name> --k8s-namespace <SQL MI namespace> --use-k8s
#Example
az sql mi-arc show --name sqlmi --k8s-namespace arc --use-k8s

Derzeit kann eine Datenbank mit Point-in-Time Restore wiederhergestellt werden:

  • Von einer bestehenden Datenbank auf einer Instanz
  • In eine neue Datenbank auf der gleichen Instanz

Automatische Sicherungen

Bei SQL Managed Instance mit Azure Arc-Unterstützung ist das integrierte Feature für automatische Sicherungen aktiviert. Bei jedem Erstellen einer neuen Datenbank oder dem Wiederherstellen einer Datenbank initiiert SQL Managed Instance mit Azure Arc-Unterstützung sofort eine vollständige Sicherung und plant differenzielle Sicherungen sowie Transaktionsprotokollsicherungen automatisch. SQL Managed Instance speichert diese Sicherungen in der während der Bereitstellung angegebenen Speicherklasse.

Mit der Zeitpunktwiederherstellung (PITR) kann eine Datenbank für einen bestimmten Zeitpunkt innerhalb des Aufbewahrungszeitraums wiederhergestellt werden. Um eine Datenbank für einen bestimmten Zeitpunkt wiederherzustellen, verwenden Azure Arc-fähige Datendienste die Backup-Dateien in einer bestimmten Reihenfolge. Beispiel:

  1. Vollständige Sicherung
  2. Differenzielle Sicherung
  3. Eine oder mehrere Transaktionsprotokollsicherungen

Point-in-time restore

Derzeit werden vollständige Sicherungen einmal pro Woche, differenzielle Sicherungen alle 12 Stunden und Transaktionsprotokollsicherungen alle 5 Minuten erstellt.

Bindungsdauer

Die Standardaufbewahrungsdauer für eine neue SQL Managed Instance mit Azure Arc-Unterstützung beträgt sieben Tage und kann mit Werten von 0 oder 1 bis 35 Tagen angepasst werden. Der Aufbewahrungszeitraum kann während der Bereitstellung der SQL Managed Instance festgelegt werden, indem die Eigenschaft --retention-days angegeben wird. Sicherungsdateien, die älter als der konfigurierte Aufbewahrungszeitraum sind, werden automatisch gelöscht.

Erstellen einer Datenbank ab einem bestimmten Zeitpunkt mit der Azure CLI

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s

Sie können auch die Option --dry-run verwenden, um den Wiederherstellungsvorgang zu überprüfen, ohne die Datenbank tatsächlich wiederherzustellen.

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s --dry-run
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s --dry-run

Erstellen einer Datenbank ab einem bestimmten Zeitpunkt mit kubectl

  1. Sie können kubectl verwenden, um eine Zeitpunktwiederherstellung mit Kubernetes-nativen Tools durchzuführen. Erstellen Sie eine aufgabenspezifische YAML-Datei. Beispiel:

    apiVersion: tasks.sql.arcdata.microsoft.com/v1
    kind: SqlManagedInstanceRestoreTask                 
    metadata:                                       
      name: myrestoretask20220304
      namespace: test                              
    spec:                                           
      source:                                       
        name: miarc1                                
        database: testdb                            
      restorePoint: "2021-10-12T18:35:33Z"          
      destination:                                  
        name: miarc1                           
        database: testdb-pitr
      dryRun: false  
    
  2. Bearbeiten Sie die Eigenschaften wie folgt:

    1. name: Eindeutige Zeichenfolge für jede benutzerdefinierte Ressource (CR). Erforderlich für Kubernetes
    2. namespace: Kubernetes-Namespace, in dem sich der SQL Managed Instance-Dienst mit Azure Arc-Unterstützung befindet
    3. source: ... name: Name der Quellinstanz
    4. source: ... database: Name der Quelldatenbank, aus der die Wiederherstellung angewendet wird
    5. restorePoint: Zeitpunkt des Wiederherstellungsvorgangs in UTC datetime
    6. destination: ... name: Name der Zielinstanz von SQL Managed Instance mit Azure Arc-Unterstützung. Derzeit wird die Zeitpunktwiederherstellung nur für SQL Managed Instance mit Azure Arc-Unterstützung unterstützt. Dabei sollte es sich um dieselbe Instanz von SQL Managed Instance wie bei der Quelle handeln.
    7. destination: ... database: Name der neuen Datenbank, auf die die Wiederherstellung angewendet wird
  3. Erstellen Sie eine Aufgabe, um die Zeitpunktwiederherstellung zu starten. Mit dem folgenden Beispiel wird die in myrestoretask20220304.yaml definierte Aufgabe initiiert.

    kubectl apply -f myrestoretask20220304.yaml
    
  4. Überprüfen Sie den Status der Wiederherstellungsaufgabe wie folgt:

    kubectl get sqlmirestoretask -n <namespace>
    

Der Status der Wiederherstellungsaufgabe wird basierend auf dem PITR-Fortschritt ungefähr alle 10 Sekunden aktualisiert. Der Fortschritt des Status verläuft von Waiting zu Restoring zu Completed oder Failed.

Erstellen einer Datenbank ab einem bestimmten Zeitpunkt mit Azure Data Studio

Sie können eine Datenbank auch wie folgt aus Azure Data Studio für einen bestimmten Zeitpunkt wiederherstellen:

  1. Starten von Azure Data Studio
  2. Stellen Sie sicher, dass Sie über die erforderlichen Arc-Erweiterungen verfügen, wie unter Tools beschrieben.
  3. Herstellen einer Verbindung mit dem Azure Arc-Datencontroller
  4. Erweitern Sie den Datencontrollerknoten, klicken Sie mit der rechten Maustaste auf die SQL Managed Instance mit Azure Arc-Unterstützung, und wählen Sie „Verwalten“ aus. Azure Data Studio startet das Dashboard von SQL Managed Instance.
  5. Klicken Sie im Dashboard auf die Registerkarte Sicherungen.
  6. Es sollte eine Liste der Datenbanken auf der SQL Managed Instance, die Zeitfenster für die „Früheste“ und „Neueste“ Wiederherstellung sowie ein Symbol zum Initiieren der Wiederherstellung angezeigt werden.
  7. Klicken Sie auf das Symbol für die Datenbank, aus der sie wiederherstellen möchten. Azure Data Studio startet ein Blatt auf der rechten Seite
  8. Geben Sie die erforderliche Eingabe auf dem Blatt an, und klicken Sie auf Wiederherstellen.

Fortschritt überwachen

Wenn eine Wiederherstellung initiiert wird, wird im Kubernetes-Cluster eine Aufgabe erstellt, die die tatsächlichen Wiederherstellungsvorgänge vollständiger, differenzieller und Protokollsicherungen ausführt. Der Fortschritt dieser Aktivität kann von Ihrem Kubernetes-Cluster aus wie folgt überwacht werden:

kubectl get sqlmirestoretask -n <namespace>
#Example
kubectl get sqlmirestoretask -n arc

Sie können weitere Details zur Aufgabe abrufen, indem Sie kubectl describe für die Aufgabe ausführen. Zum Beispiel:

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

Konfigurieren des Aufbewahrungszeitraums

Der Aufbewahrungszeitraum für eine SQL Managed Instance mit Azure Arc-Unterstützung kann wie folgt abweichend von der ursprünglichen Einstellung neu konfiguriert werden:

Warnung

Wenn Sie die aktuelle Beibehaltungsdauer verringern, verlieren Sie die Möglichkeit, Zeitpunkte wiederherzustellen, die älter als die neue Beibehaltungsdauer sind. Sicherungen, die für die Bereitstellung von Point-in-Time-Wiederherstellungen innerhalb der neuen Beibehaltungsdauer nicht mehr benötigt werden, werden gelöscht. Wenn Sie die aktuelle Beibehaltungsdauer verringern, wird die Möglichkeit, Zeitpunkte innerhalb der neuen Beibehaltungsdauer wiederherzustellen, nicht sofort hergestellt. Sie erhalten diese Möglichkeit im Lauf der Zeit, während das System beginnt, Sicherungen länger aufzubewahren.

Ändern des Aufbewahrungszeitraums für eine direkt verbundene SQL Managed Instance

az sql mi-arc edit  --name <SQLMI name> --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 10
#Example
az sql mi-arc edit  --name sqlmi --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 10

Ändern des Aufbewahrungszeitraums für eine indirekt verbundene SQL Managed Instance

az sql mi-arc edit  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days <retentiondays>
#Example
az sql mi-arc edit  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 10

Deaktivieren automatischer Sicherungen

Sie können die automatischen Sicherungen für eine bestimmte Instanz einer SQL Managed Instance mit Azure Arc-Unterstützung deaktivieren, indem Sie die Einstellung --retention-days wie folgt auf 0 festlegen.

Warnung

Wenn Sie automatische Sicherungen für eine Instanz von SQL Managed Instance mit Azure Arc-Unterstützung deaktivieren, werden alle konfigurierten automatischen Sicherungen gelöscht, und Sie können keine Zeitpunktwiederherstellung mehr durchführen. Sie können die Eigenschaft retention-days so ändern, dass automatische Sicherungen bei Bedarf erneut initiiert werden.

Deaktivieren automatischer Sicherungen für eine direkt verbundene SQL Managed Instance

az sql mi-arc edit  --name <SQLMI name> --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 0
#Example
az sql mi-arc edit  --name sqlmi --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 0

Deaktivieren automatischer Sicherungen für eine indirekt verbundene SQL Managed Instance

az sql mi-arc edit  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days 0
#Example
az sql mi-arc edit  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 0

Backups überwachen

Die Sicherungen werden im Ordner /var/opt/mssql/backups/archived/<dbname>/<datetime> gespeichert. Dabei ist <dbname> der Name der Datenbank und <datetime> ein Zeitstempel im UTC-Format für den Anfang jeder vollständigen Sicherung. Jedes Mal, wenn eine vollständige Sicherung initiiert wird, wird ein neuer Ordner mit der vollständigen Sicherung und allen nachfolgenden differenziellen und Transaktionsprotokollsicherungen in diesem Ordner erstellt. Die aktuellste vollständige Sicherung und die nachfolgenden differenziellen und Transaktionsprotokollsicherungen werden im Ordner /var/opt/mssql/backups/current/<dbname><datetime> gespeichert.

Einschränkungen

Die Zeitpunktwiederherstellung in SQL Managed Instance mit Azure Arc-Unterstützung ist mit folgenden Einschränkungen verbunden:

  • Eine Zeitpunktwiederherstellung einer ganzen SQL Managed Instance mit Azure Arc-Unterstützung ist nicht möglich.
  • Eine SQL Managed Instance mit Azure Arc-Unterstützung, die mit Hochverfügbarkeit bereitgestellt wird, unterstützt zurzeit keine Point-in-Time-Wiederherstellung.
  • Sie können nur auf dieselbe Azure Arc-fähige SQL Managed Instance wiederherstellen.
  • Das Löschen und Erstellen verschiedener Datenbanken mit gleichem Namen wird derzeit nicht korrekt gehandhabt.
  • Die Angabe eines zukünftigen Datums beim Ausführen des Wiederherstellungsvorgangs mit --dry-run führt zu einem Fehler.

Nächste Schritte

Erfahren Sie mehr über Features und Funktionen von Azure Arc-aktivierten SQL Managed Instance-Instanzen

Beginnen Sie mit der Erstellung eines Datencontrollers

Wurde bereits ein Datencontroller erstellt? Erstellen von Azure Arc-fähigen SQL Managed Instance-Instanzen