Condividi tramite


Eseguire un ripristino temporizzato

Usare il ripristino temporizzato (PITR) per creare un database come copia di un altro database da un punto nel tempo passato entro il periodo di conservazione. Questo articolo descrive come eseguire il ripristino temporizzato di un database in Istanza gestita di SQL abilitata 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 a un punto nel tempo entro un'impostazione del periodo di conservazione preconfigurata. È possibile controllare l'impostazione di conservazione per un'Istanza gestita di SQL abilitata da Azure Arc come indicato di seguito:

Per la modalità con connessione 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à con connessione 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

Al momento, il recupero temporizzato consente di ripristinare un database:

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

Backup automatici

Istanza gestita di SQL abilitata da Azure Arc include funzionalità di backup automatico predefinite abilitate. Ogni volta che si crea o si ripristina un nuovo database, Istanza gestita di SQL abilitata da Azure Arc avvia immediatamente un backup completo e pianifica automaticamente i backup dei log delle transazioni e differenziali. Istanza gestita di SQL archivia questi backup nella classe di archiviazione specificata durante la distribuzione.

Il ripristino temporizzato consente di ripristinare un database a un momento specifico entro il periodo di conservazione. Per ripristinare un database a 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

Ripristino temporizzato

Attualmente, i backup completi vengono eseguiti una volta a 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 una nuova Istanza gestita di SQL abilitata 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 al momento della distribuzione di Istanza gestita di SQL specificando la proprietà --retention-days. 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 Azure

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 --dry-run per convalidare l'operazione 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 utilizzare 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à come segue:

    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: Momento del tempo per l'operazione di ripristino in formato data/ora UTC.
    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 SQL Arc. 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 a Completed o Failed.

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

È anche possibile ripristinare un database a 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. Eseguire la connessione al controller dei dati di Azure Arc
  4. Espandere il nodo del controller dei dati, fare clic con il pulsante destro del mouse sull'istanza e selezionare Gestisci. Azure Data Studio avvia il dashboard di Istanza gestita di SQL.
  5. Fare clic sulla scheda Backup nel dashboard
  6. Verranno visualizzati 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 apre un riquadro verso il lato destro
  8. Specificare l'input necessario nel riquadro 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 dei 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 l'attività kubectl describe. Ad esempio:

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

Configurare il periodo di conservazione

Il periodo di conservazione per un'Istanza gestita di SQL abilitata 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 a momenti 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. Allo stesso modo, se si aumenta il periodo di conservazione corrente, non si ottiene immediatamente la possibilità di eseguire il ripristino a momenti nel tempo precedenti all'interno del nuovo periodo di conservazione. Tale possibilità si ottiene nel tempo, man mano che il sistema inizia a conservare i backup per periodi più lunghi.

È possibile modificare --retention-period per un'Istanza gestita di SQL di Azure Arc come indicato di seguito. Il comando seguente si applica a entrambe le modalità connesse direct e indirect.

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 proprietà --retention-days su 0, come indicato di seguito. Il comando seguente si applica a entrambe le modalità direct e indirect.

Avviso

Se si disabilitano i backup automatici per un'Istanza gestita di SQL abilitata da Azure Arc, tutti i backup automatici configurati verranno eliminati e si perderà la possibilità di eseguire un ripristino temporizzato. È possibile modificare la proprietà retention-days 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 cartella /var/opt/mssql/backups/archived/<dbname>/<datetime>, 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 dei log delle transazioni successivi all'interno di tale cartella. Il backup completo più recente e i successivi backup differenziali e dei log delle transazioni vengono archiviati nella cartella /var/opt/mssql/backups/current/<dbname><datetime>.

Limiti

Il ripristino temporizzato in Istanza gestita di SQL abilitata 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 dal punto cui è stato eseguito il backup.

Altre informazioni su Caratteristiche e funzionalità di Istanza gestita di SQL abilitata da Azure Arc

Iniziare con la creazione di un controller dati

Creare un'Istanza gestita di SQL abilitata da Azure Arc