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. Dieser Artikel beschreibt, wie Sie eine Point-in-Time-Wiederherstellung einer Datenbank in einer Azure Arc-fähigen SQL Managed Instance durchführen.

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

  • Von einer bestehenden Datenbank
  • in eine neue Datenbank auf derselben SQL-Manager-Instanz mit Azure Arc-Aktivierung

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-Aktivierung 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-Aktivierung 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-Aktivierung 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.

Aufbewahrungszeitraum

Die Standardaufbewahrungsdauer für eine neue SQL Managed Instance mit Azure Arc-Aktivierung 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 die Instanz 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 Instanz, und wählen Sie Verwaltenaus 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. Beispiel:

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

Konfigurieren des Aufbewahrungszeitraums

Der Aufbewahrungszeitraum für eine SQL Managed Instance mit Azure Arc-Aktivierung 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.

Diese --retention-period kann für eine SQL Managed Instance-Azure Arc-Instanz wie folgt geändert werden. Der folgende Befehl gilt sowohl für direct als auch indirect verbundene Modi.

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days <retentiondays>

Beispiel:

az sql mi-arc update  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 10

Deaktivieren automatischer Sicherungen

Sie können die integrierten automatischen Sicherungen für eine bestimmte Instanz einer SQL Managed Instance mit Azure Arc-Aktivierung deaktivieren, indem Sie die Einstellung --retention-days wie folgt auf 0 festlegen. Der folgende Befehl gilt sowohl für direct als auch indirect Modi.

Warnung

Wenn Sie automatische Sicherungen für eine Instanz von SQL Managed Instance mit Azure Arc-Aktivierung 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.

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days 0

Beispiel:

az sql mi-arc update  --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.

Begrenzungen

Die Point-in-Time-Wiederherstellung auf eine SQL Managed Instance mit Azure Arc-Aktivierung unterliegt den folgenden Einschränkungen:

  • Zeitpunktwiederherstellung ist das Feature auf Datenbankebene, nicht ein Feature auf Instanzebene. Sie können nicht die gesamte Instanz mit der Zeitpunktwiederherstellung wiederherstellen.
  • Sie können nur auf derselben verwalteten SQL-Instanz mit Azure Arc-Aktivierung wiederherstellen, von der aus die Sicherung durchgeführt wurde.

Weitere Informationen zu Features und Funktionen der von Azure Arc aktivierten SQL Managed Instance-Instanzen

Beginnen Sie mit der Erstellung eines Datencontrollers

Erstellen einer von Azure Arc aktivierte SQL Managed Instance-Instanz