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:
- Backup completo
- Backup differenziale
- Uno o più backup del log delle transazioni
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
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
Modificare le proprietà nel modo seguente:
name:
Stringa univoca per ogni risorsa personalizzata (CR). Richiesto da Kubernetes.namespace:
Spazio dei nomi Kubernetes in cui si trova l'istanza.source: ... name:
Nome dell'istanza di origine.source: ... database:
Nome del database di origine da cui verrà applicato il ripristino.restorePoint:
Temporizzato per l'operazione di ripristino in formato UTC datetime.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.destination: ... database:
Nome del nuovo database a cui verrà applicato il ripristino.
Creare un'attività per avviare il ripristino temporizzato. Nell'esempio seguente viene avviata l'attività definita in
myrestoretask20220304.yaml
.kubectl apply -f myrestoretask20220304.yaml
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 Completed
Failed
.
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:
- Avviare Azure Data Studio
- Assicurarsi di disporre delle estensioni Arc necessarie, come descritto in Strumenti.
- Connessione al titolare del trattamento dei dati di Azure Arc
- 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.
- Fare clic sulla scheda Backup nel dashboard
- 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
- Fare clic sull'icona per il database da cui si vuole eseguire il ripristino. Azure Data Studio avvia un pannello verso il lato destro
- 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.