Share via


Eseguire un ripristino temporizzato

Usare il ripristino temporizzato (PITR) per creare un database come copia di un altro database da qualche tempo in passato entro il periodo di conservazione. Questo articolo descrive come eseguire un ripristino temporizzato di un database in Istanza gestita di SQL abilitato da Azure Arc.

Il recupero temporizzato consente di ripristinare un database:

  • Da un database esistente
  • Per un nuovo database nella stessa Istanza gestita di SQL abilitata da Azure Arc

È possibile ripristinare un database in un punto nel tempo entro un'impostazione di conservazione preconfigurato. È possibile controllare l'impostazione di conservazione per un Istanza gestita di SQL abilitato da Azure Arc come indicato di seguito:

Per la modalità connessa diretta :

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

Per la modalità connessa indiretta :

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

Attualmente, il ripristino temporizzato può ripristinare un database:

  • Da un database esistente in un'istanza
  • In un nuovo database nella stessa istanza

Backup automatici

Istanza gestita di SQL abilitato da Azure Arc è abilitata la funzionalità di backup automatici predefinita. Ogni volta che si crea o si ripristina un nuovo database, Istanza gestita di SQL abilitato da Azure Arc avvia immediatamente un backup completo e pianifica automaticamente i backup differenziali e del log delle transazioni. L'istanza gestita di SQL archivia questi backup nella classe di archiviazione specificata durante la distribuzione.

Il ripristino temporizzato consente di ripristinare un database in un momento specifico entro il periodo di conservazione. Per ripristinare un database in un momento specifico, i servizi dati abilitati per Azure Arc applicano i file di backup in un ordine specifico. Ad esempio:

  1. Backup completo
  2. Backup differenziale
  3. Uno o più backup del log delle transazioni

Point-in-time restore

Attualmente, i backup completi vengono eseguiti una volta alla settimana, i backup differenziali vengono eseguiti ogni 12 ore e i backup del log delle transazioni ogni 5 minuti.

Periodo di fidelizzazione

Il periodo di conservazione predefinito per un nuovo Istanza gestita di SQL abilitato da Azure Arc è di sette giorni e può essere modificato con i valori 0 o 1-35 giorni. Il periodo di conservazione può essere impostato durante la distribuzione dell'istanza gestita di SQL specificando la --retention-days proprietà . I file di backup precedenti al periodo di conservazione configurato vengono eliminati automaticamente.

Creare un database da un punto nel tempo usando l'interfaccia della riga di comando di Az

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

È anche possibile usare l'opzione per convalidare l'operazione --dry-run di ripristino senza ripristinare effettivamente il database.

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

Creare un database da un punto nel tempo usando kubectl

  1. Per eseguire un ripristino temporizzato con gli strumenti nativi di Kubernetes, è possibile usare kubectl. Creare un file yaml della specifica di attività. Ad esempio:

    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. Modificare le proprietà nel modo seguente:

    1. name: Stringa univoca per ogni risorsa personalizzata (CR). Richiesto da Kubernetes.
    2. namespace: Spazio dei nomi Kubernetes in cui si trova l'istanza.
    3. source: ... name: Nome dell'istanza di origine.
    4. source: ... database: Nome del database di origine da cui verrà applicato il ripristino.
    5. restorePoint: Temporizzato per l'operazione di ripristino in formato UTC datetime.
    6. destination: ... name: Nome dell'istanza gestita di SQL abilitata per Arc di destinazione. Attualmente, il ripristino temporizzato è supportato solo all'interno dell'istanza gestita di Arc SQL. Deve essere uguale all'istanza gestita di SQL di origine.
    7. destination: ... database: Nome del nuovo database a cui verrà applicato il ripristino.
  3. Creare un'attività per avviare il ripristino temporizzato. Nell'esempio seguente viene avviata l'attività definita in myrestoretask20220304.yaml.

    kubectl apply -f myrestoretask20220304.yaml
    
  4. Controllare lo stato dell'attività di ripristino come indicato di seguito:

    kubectl get sqlmirestoretask -n <namespace>
    

Lo stato dell'attività di ripristino verrà aggiornato ogni 10 secondi in base all'avanzamento del ripristino temporizzato. Lo stato procede da Waiting a Restoring o CompletedFailed.

Creare un database da un punto nel tempo usando Azure Data Studio

È anche possibile ripristinare un database in un punto nel tempo da Azure Data Studio come indicato di seguito:

  1. Avviare Azure Data Studio
  2. Assicurarsi di disporre delle estensioni Arc necessarie, come descritto in Strumenti.
  3. Connessione al titolare del trattamento dei dati di Azure Arc
  4. Espandere il nodo del controller dati, fare clic con il pulsante destro del mouse sull'istanza e selezionare Gestisci. Azure Data Studio avvia il dashboard dell'istanza gestita di SQL.
  5. Fare clic sulla scheda Backup nel dashboard
  6. Verrà visualizzato un elenco di database nell'istanza gestita di SQL e nelle relative finestre temporali di ripristino meno recenti e più recenti e un'icona per avviare il ripristino
  7. Fare clic sull'icona per il database da cui si vuole eseguire il ripristino. Azure Data Studio avvia un pannello verso il lato destro
  8. Specificare l'input necessario nel pannello e fare clic su Ripristina

Monitorare lo stato di avanzamento

Quando viene avviato un ripristino, viene creata un'attività nel cluster Kubernetes che esegue le operazioni di ripristino effettive dei backup completi, differenziali e del log. L'avanzamento di questa attività può essere monitorato dal cluster Kubernetes come indicato di seguito:

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

È possibile ottenere altri dettagli dell'attività eseguendo kubectl describe l'attività. Ad esempio:

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

Configurare il periodo di conservazione

Il periodo di conservazione per un Istanza gestita di SQL abilitato da Azure Arc può essere riconfigurato dall'impostazione originale come indicato di seguito:

Avviso

Se si riduce il periodo di conservazione corrente, si perde la possibilità di ripristinare i punti nel tempo precedenti al nuovo periodo di conservazione. I backup che non sono più necessari per fornire ripristino temporizzato entro il nuovo periodo di conservazione vengono eliminati. Se si aumenta il periodo di conservazione corrente, non si ottiene immediatamente la possibilità di ripristinare i punti meno recenti nel tempo entro il nuovo periodo di conservazione. Si ottiene tale capacità nel tempo, man mano che il sistema inizia a conservare i backup per più tempo.

Può --retention-period essere modificato per un Istanza gestita di SQL-Azure Arc come indicato di seguito. Il comando seguente si applica a entrambe le direct modalità e indirect alle modalità connesse.

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

Ad esempio:

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

Disabilitare i backup automatici

È possibile disabilitare i backup automatici predefiniti per un'istanza specifica di Istanza gestita di SQL abilitata da Azure Arc impostando la --retention-days proprietà su 0, come indicato di seguito. Il comando seguente si applica a entrambe le direct modalità e indirect .

Avviso

Se si disabilitano i backup automatici per una Istanza gestita di SQL abilitata da Azure Arc, tutti i backup automatici configurati verranno eliminati e si perde la possibilità di eseguire un ripristino temporizzato. È possibile modificare la retention-days proprietà per avviare nuovamente i backup automatici, se necessario.

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

Ad esempio:

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

Monitorare i backup

I backup vengono archiviati nella /var/opt/mssql/backups/archived/<dbname>/<datetime> cartella, dove <dbname> è il nome del database e <datetime> sarebbe un timestamp in formato UTC, per l'inizio di ogni backup completo. Ogni volta che viene avviato un backup completo, viene creata una nuova cartella con il backup completo e tutti i backup differenziali e del log delle transazioni successivi all'interno di tale cartella. Il backup completo più recente e i successivi backup differenziali e del log delle transazioni vengono archiviati nella /var/opt/mssql/backups/current/<dbname><datetime> cartella .

Limiti

Il ripristino temporizzato per Istanza gestita di SQL abilitato da Azure Arc presenta le limitazioni seguenti:

  • Il ripristino temporizzato è una funzionalità a livello di database, non una funzionalità a livello di istanza. Non è possibile ripristinare l'intera istanza con il ripristino temporizzato.
  • È possibile eseguire il ripristino solo nella stessa Istanza gestita di SQL abilitata da Azure Arc da cui è stato eseguito il backup.

Altre informazioni sulle funzionalità e sulle funzionalità di Istanza gestita di SQL abilitate da Azure Arc

Iniziare con la creazione di un controller dati

Creare un Istanza gestita di SQL abilitato da Azure Arc