Ripristinare i database SQL in una macchina virtuale di Azure usando l'interfaccia della riga di comando di Azure
\Interfaccia della riga di comando di Azure viene usata per creare e gestire le risorse di Azure dalla riga di comando o tramite script. Questo articolo descrive come ripristinare un database SQL di cui è stato eseguito il backup in una macchina virtuale di Azure usando l'interfaccia della riga di comando di Azure. È anche possibile eseguire queste azioni usando il portale di Azure.
Usare Azure Cloud Shell per eseguire i comandi dell'interfaccia della riga di comando.
In questo articolo si apprenderà come:
- Visualizzare i punti di ripristino per un database sottoposto a backup
- Ripristinare un database
Questo articolo presuppone che sia in esecuzione un database SQL nella macchina virtuale di Azure di cui viene eseguito il backup usando Backup di Azure. Se è stato usato Eseguire il backup di un database SQL in Azure usando l'interfaccia della riga di comando per eseguire il backup del database SQL, si usano le risorse seguenti:
- Un gruppo di risorse denominato
SQLResourceGroup
. - Insieme di credenziali denominato
SQLVault
. - Contenitore protetto denominato
VMAppContainer;Compute;SQLResourceGroup;testSQLVM
. - Database/elemento di cui è stato eseguito il backup denominato
sqldatabase;mssqlserver;master
. - Risorse nell'area
westus
.
Nota
Per altre informazioni sulle configurazioni e sugli scenari supportati, vedere la matrice di supporto per il backup SQL .
Visualizzare i punti di ripristino per un database sottoposto a backup
Per visualizzare l'elenco di tutti i punti di ripristino per un database, usare il comando az backup recoverypoint list come:
az backup recoverypoint list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--output table
L'elenco dei punti di ripristino viene visualizzato come segue:
Name Time BackupManagementType Item Name RecoveryPointType
------------------- --------------------------------- --------------------- ---------------------- ------------------
7660777527047692711 2019-12-10T04:00:32.346000+00:00 AzureWorkload sqldatabase;mssqlserver;master Full
7896624824685666836 2019-12-15T10:33:32.346000+00:00 AzureWorkload sqldatabase;mssqlserver;master Differential
DefaultRangeRecoveryPoint AzureWorkload sqldatabase;mssqlserver;master Log
L'elenco precedente contiene tre punti di ripristino: ognuno per il backup completo, differenziale e del log.
Nota
È anche possibile visualizzare i punti di inizio e di fine di ogni catena di backup del log non registrato, usando il comando az backup recoverypoint show-log-chain .
Prerequisiti per il ripristino di un database
Prima di ripristinare un database, verificare che siano soddisfatti i prerequisiti seguenti:
- È possibile ripristinare il database solo in un'istanza DI SQL nella stessa area.
- L'istanza di destinazione deve essere registrata con lo stesso insieme di credenziali dell'origine.
Ripristinare un database
Backup di Azure possibile ripristinare i database SQL in esecuzione nelle macchine virtuali di Azure come:
- Ripristinare una data specifica o un'ora (al secondo), usando i backup del log. In base ai tempi di ripristino specificati, Backup di Azure determina automaticamente i backup completi, differenziali e la catena di backup del log necessari per ripristinare in base all'ora selezionata.
- Ripristinare un backup completo o differenziale specifico per il ripristino a un punto di ripristino specifico.
Per ripristinare un database, usare il comando az restore restore-azurewl , che richiede un oggetto config di ripristino come uno degli input. È possibile generare questo oggetto usando il comando az backup recoveryconfig show . L'oggetto config di ripristino contiene tutti i dettagli per eseguire un ripristino. Uno di essi è la modalità di ripristino : OriginalWorkloadRestore o AlternateWorkloadRestore.
Nota
OriginalWorkloadRestore: ripristina i dati nella stessa istanza SQL dell'origine originale. Questa opzione sovrascrive il database originale. AlternateWorkloadRestore: ripristina il database in un percorso alternativo e mantiene il database di origine originale.
Ripristinare in un percorso alternativo
Per ripristinare un database in un percorso alternativo, usare AlternateWorkloadRestore come modalità di ripristino. È quindi necessario scegliere il punto di ripristino, che potrebbe essere un punto nel tempo precedente o eventuali punti di ripristino precedenti.
Procedere con il ripristino a un punto di ripristino precedente. Visualizzare l'elenco dei punti di ripristino per il database e scegliere il punto da ripristinare. In questo caso si userà il punto di ripristino con il nome 7660777527047692711.
Con il nome del punto di ripristino precedente e la modalità di ripristino, creare l'oggetto config di ripristino usando il comando az backup recoveryconfig show . Controllare i parametri rimanenti in questo comando:
- --target-item-name: nome da utilizzare dal database ripristinato. In questo scenario è stato usato il nome restored_database.
- --target-server-name: nome di un server SQL registrato correttamente in un insieme di credenziali di Servizi di ripristino e rimane la stessa area in base al database da ripristinare. In questo caso si ripristina il database nello stesso server SQL protetto, denominato testSQLVM.
- --target-server-type: per il ripristino dei database SQL, è necessario usare SQLInstance.
az backup recoveryconfig show --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name SQLDataBase;mssqlserver;master \
--restore-mode AlternateWorkloadRestore \
--rp-name 7660777527047692711 \
--target-item-name restored_database \
--target-server-name testSQLVM \
--target-server-type SQLInstance \
--workload-type SQLDataBase \
--output json
La risposta alla query precedente è un oggetto config di ripristino visualizzato come:
{
"container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLResourceGroup;testSQLVM",
"container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
"database_name": "MSSQLSERVER/restored_database",
"filepath": null,
"item_type": "SQL",
"item_uri": "SQLDataBase;mssqlserver;master",
"log_point_in_time": null,
"recovery_mode": null,
"recovery_point_id": "7660777527047692711",
"restore_mode": "AlternateLocation",
"source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
"workload_type": "SQLDataBase",
"alternate_directory_paths": []
}
A questo momento, per ripristinare il database, eseguire il comando az restore restore-azurewl . Per usare questo comando, immettere l'output JSON precedente salvato in un file denominato recoveryconfig.json.
az backup restore restore-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--recovery-config recoveryconfig.json \
--output table
L'output viene visualizzato come segue:
Name Operation Status Item Name Backup Management Type Start Time UTC Duration
------------------------------------ ----------- ---------- --------------------------------- ------------------------ -------------------------------- --------------
be7ea4a4-0752-4763-8570-a306b0a0106f Restore InProgress master [testSQLVM] AzureWorkload 2022-06-21T03:51:06.898981+00:00 0:00:05.652967
La risposta fornisce il nome del processo. È possibile usare questo nome di processo per tenere traccia dello stato del processo usando il comando az backup job show .
Ripristinare e sovrascrivere
Per eseguire il ripristino nel percorso originale, usare OriginalWorkloadRestore come modalità di ripristino. È quindi necessario scegliere il punto di ripristino, che potrebbe essere un punto nel tempo precedente o uno dei punti di ripristino precedenti.
Ad esempio, scegliamo il punto nel tempo precedente "28-11-2019-09:53:00" in cui eseguire il ripristino. È possibile specificare questo punto di ripristino nei formati seguenti: gg-mm-aaaa, gg-mm-a-hh:mm:ss. Per scegliere un punto nel tempo valido da ripristinare, usare il comando az backup recoverypoint show-log-chain , che elenca gli intervalli di backup della catena di log non registrati.
az backup recoveryconfig show --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--restore-mode OriginalWorkloadRestore \
--log-point-in-time 20-06-2022-09:02:41 \
--output json
La risposta alla query precedente è un oggetto config di ripristino visualizzato come:
{
"alternate_directory_paths": null,
"container_id": null,
"container_uri": "VMAppContainer;compute;petronasinternaltest;sqlserver-11",
"database_name": null,
"filepath": null,
"item_type": "SQL",
"item_uri": "SQLDataBase;mssqlserver;msdb",
"log_point_in_time": "20-06-2022-09:02:41",
"recovery_mode": null,
"recovery_point_id": "DefaultRangeRecoveryPoint",
"restore_mode": "OriginalLocation",
"source_resource_id": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/petronasinternaltest/providers/Microsoft.Compute/virtualMachines/sqlserver-11",
"workload_type": "SQLDataBase"
}
A questo momento, per ripristinare il database, eseguire il comando az restore restore-azurewl . Per usare questo comando, immettere l'output JSON precedente salvato in un file denominato recoveryconfig.json.
az backup restore restore-azurewl --resource-group sqlResourceGroup \
--vault-name sqlVault \
--recovery-config recoveryconfig.json \
--output table
L'output viene visualizzato come segue:
Name Operation Status Item Name Backup Management Type Start Time UTC Duration
------------------------------------ ----------- ---------- ------------------------------- ------------------------ -------------------------------- --------------
1730ec49-166a-4bfd-99d5-93027c2d8480 Restore InProgress master [testSQLVM] AzureWorkload 2022-06-21T04:04:11.161411+00:00 0:00:03.118076
La risposta fornisce il nome del processo. È possibile usare questo nome di processo per tenere traccia dello stato del processo usando il comando az backup job show .
Eseguire il ripristino in un'area secondaria
Per ripristinare un database nell'area secondaria, specificare un insieme di credenziali di destinazione e un server che si trova nell'area secondaria, nella configurazione di ripristino.
az backup recoveryconfig show --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--restore-mode AlternateWorkloadRestore \
--from-full-rp-name 293170069256531 \
--rp-name 293170069256531 \
--target-server-name targetSQLServer \
--target-container-name VMAppContainer;compute;SQLResourceGroup;targetSQLServer \
--target-item-name testdb_restore_1 \
--target-server-type SQLInstance \
--workload-type SQLDataBase \
--target-resource-group SQLResourceGroup \
--target-vault-name targetVault \
--backup-management-type AzureWorkload
La risposta è un oggetto di configurazione di ripristino visualizzato come:
{
"container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/targetVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLResourceGroup;targetSQLServer",
"container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
"database_name": "MSSQLSERVER/sqldatabase;mssqlserver;testdb_restore_1",
"filepath": null,
"item_type": "SQL",
"item_uri": "SQLDataBase;mssqlserver;master",
"log_point_in_time": null,
"recovery_mode": null,
"recovery_point_id": "932606668166874635",
"restore_mode": "AlternateLocation",
"source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
"workload_type": "SQLDataBase",
"alternate_directory_paths": [],
}
Usare questa configurazione di ripristino nel comando az restore restore-azurewl . Selezionare il --use-secondary-region
flag per ripristinare il database nell'area secondaria.
az backup restore restore-azurewl --resource-group SQLResourceGroup \
--vault-name testSQLVault \
--recovery-config recoveryconfig.json \
--use-secondary-region \
--output table
L'output viene visualizzato come segue:
Name Operation Status Item Name Backup Management Type Start Time UTC Duration
------------------------------------ ------------------ ---------- ------------------------- ------------------------ -------------------------------- --------------
0d863259-b0fb-4935-8736-802c6667200b CrossRegionRestore InProgress master [testSQLVM] AzureWorkload 2022-06-21T08:29:24.919138+00:00 0:00:12.372421
Nota
Il valore RPO per i dati di backup da rendere disponibili nell'area secondaria è di 12 ore. Pertanto, quando si attiva CRR, l'RPO per l'area secondaria è di 12 ore e la durata della frequenza del log (che può essere impostata su un minimo di 15 minuti).
Ripristinare come file
Per ripristinare i dati di backup come file invece di un database, usare RestoreAsFiles come modalità di ripristino. Scegliere quindi il punto di ripristino, che può essere un punto nel tempo precedente o qualsiasi punto di ripristino precedente. Dopo aver eseguito il dump dei file in un percorso specificato, è possibile eseguire il dump di questi file in qualsiasi computer SQL in cui si desidera ripristinarli come database. Dal momento che è possibile spostare questi file in qualsiasi computer, è ora possibile ripristinare i dati tra sottoscrizioni e aree diverse.
In questo caso, scegliere il punto nel tempo 28-11-2019-09:53:00
precedente da ripristinare e il percorso in cui eseguire il dump dei file di backup nello /home/sql/restoreasfiles
stesso server SQL. È possibile specificare questo punto di ripristino in uno dei formati seguenti: gg-mm-a o gg-mm-a-hh:mm:ss. Per scegliere un punto nel tempo valido da ripristinare, usare il comando az backup recoverypoint show-log-chain , che elenca gli intervalli di backup della catena di log non registrati.
Con il nome del punto di ripristino precedente e la modalità di ripristino, creare l'oggetto config di ripristino usando il comando az backup recoveryconfig show . Controllare ognuno dei parametri rimanenti in questo comando:
- --target-container-name: nome di un server SQL registrato correttamente in un insieme di credenziali di Servizi di ripristino e presente nella stessa area in base al database da ripristinare. Ripristinare il database come file nello stesso server SQL protetto, denominato hxehost.
- --rp-name: per un ripristino temporizzato, il nome del punto di ripristino è DefaultRangeRecoveryPoint.
az backup recoveryconfig show --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--restore-mode RestoreAsFiles \
--rp-name 932606668166874635 \
--target-container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--filepath /sql/restoreasfiles \
--output json
La risposta alla query precedente js un oggetto config di ripristino visualizzato come:
{
"alternate_directory_paths": null,
"container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLResourceGroup;testSQLVM",
"container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
"database_name": null,
"filepath": "/sql/restoreasfiles",
"item_type": "SQL",
"item_uri": "SQLDataBase;mssqlserver;master",
"log_point_in_time": null,
"recovery_mode": "FileRecovery",
"recovery_point_id": "932606668166874635",
"restore_mode": "AlternateLocation",
"source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
"workload_type": "SQLDataBase"
}
A questo momento, per ripristinare il database come file eseguire il comando az restore restore-azurewl . Per usare questo comando, immettere l'output JSON precedente salvato in un file denominato recoveryconfig.json.
az backup restore restore-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--restore-config recoveryconfig.json \
--output json
L'output viene visualizzato come segue:
{
"eTag": null,
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupJobs/e9cd9e73-e3a3-425a-86a9-8dd1c500ff56",
"location": null,
"name": "e9cd9e73-e3a3-425a-86a9-8dd1c500ff56",
"properties": {
"actionsInfo": [
"1"
],
"activityId": "9e7c8ee4-f1ef-11ec-8a2c-3c52826c1a9a",
"backupManagementType": "AzureWorkload",
"duration": "0:00:04.304322",
"endTime": null,
"entityFriendlyName": "master [testSQLVM]",
"errorDetails": > [!NOTE]
> Information the user should notice even if skimmingnull,
"extendedInfo": {
"dynamicErrorMessage": null,
"propertyBag": {
"Job Type": "Restore as files"
},
"tasksList": [
{
"status": "InProgress",
"taskId": "Transfer data from vault"
}
]
},
"isUserTriggered": true,
"jobType": "AzureWorkloadJob",
"operation": "Restore",
"startTime": "2022-06-22T05:53:32.951666+00:00",
"status": "InProgress",
"workloadType": "SQLDataBase"
},
"resourceGroup": "SQLResourceGroup",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupJobs"
}
La risposta fornisce il nome del processo. È possibile usare questo nome di processo per tenere traccia dello stato del processo usando il comando az backup job show .
Nota
Se non si vuole ripristinare l'intera catena, ma solo un subset di file, seguire la procedura descritta qui.
Ripristino tra sottoscrizioni
Con il ripristino tra sottoscrizioni è possibile ripristinare qualsiasi sottoscrizione e qualsiasi insieme di credenziali nel tenant, se sono disponibili autorizzazioni di ripristino. Per impostazione predefinita, csr è abilitato in tutti gli insiemi di credenziali di Servizi di ripristino (insiemi di credenziali esistenti e appena creati).
Nota
- È possibile attivare il ripristino tra sottoscrizioni dall'insieme di credenziali di Servizi di ripristino.
- Csr è supportato solo per il backup basato su streaming e non è supportato per il backup basato su snapshot.
- Il ripristino tra aree (CRR) con CSR non è supportato.
az backup vault create
Aggiungere il parametro cross-subscription-restore-state
che consente di impostare lo stato CSR dell'insieme di credenziali durante la creazione e l'aggiornamento dell'insieme di credenziali.
az backup recoveryconfig show
Aggiungere il parametro --target-subscription-id
che consente di specificare la sottoscrizione di destinazione come input durante l'attivazione del ripristino tra sottoscrizioni per le origini dati SQL o HANA.
Esempio:
az backup vault create -g {rg_name} -n {vault_name} -l {location} --cross-subscription-restore-state Disable
az backup recoveryconfig show --restore-mode alternateworkloadrestore --backup-management-type azureworkload -r {rp} --target-container-name {target_container} --target-item-name {target_item} --target-resource-group {target_rg} --target-server-name {target_server} --target-server-type SQLInstance --target-subscription-id {target_subscription} --target-vault-name {target_vault} --workload-type SQLDataBase --ids {source_item_id}
Passaggi successivi
- Informazioni su come gestire i database SQL di cui viene eseguito il backup con l'interfaccia della riga di comando di Azure.
- Informazioni su come ripristinare un database SQL in esecuzione nella macchina virtuale di Azure usando il portale di Azure.