Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'interfaccia della riga di comando di Azure consente di creare e gestire le risorse di Azure dalla riga di comando o tramite script. Questo articolo descrive come eseguire il backup di un database SQL nella macchina virtuale di Azure e attivare backup su richiesta usando l'interfaccia della riga di comando di Azure. È anche possibile eseguire queste azioni usando il portale di Azure.
Questo articolo presuppone che sia già installato un database SQL in una macchina virtuale di Azure. È anche possibile creare una macchina virtuale usando l'interfaccia della riga di comando di Azure.
In questo articolo si apprenderà come:
- Creare un insieme di credenziali di Servizi di ripristino
- Registrare un'istanza di SQL Server e individuare i database al suo interno
- Abilitare il backup in un database SQL
- Attivare un backup su richiesta
Per visualizzare gli scenari di backup e ripristino attualmente supportati, vedere la matrice di supporto. Per domande comuni, vedere le domande frequenti.
Prerequisiti
Utilizzare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se si preferisce, per eseguire localmente i comandi di riferimento CLI, installare l'interfaccia della riga di comando di Azure per eseguire i relativi comandi di riferimento. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure usando il comando az login . Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Al primo utilizzo, quando richiesto, installare l'estensione CLI di Azure. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Creare un insieme di credenziali di Servizi di ripristino
Un vault dei Servizi di ripristino è un contenitore logico che archivia i dati di backup per ogni risorsa protetta, ad esempio le VM di Azure o i carichi di lavoro eseguiti sulle VM di Azure, come i database SQL o HANA. Quando viene eseguito il processo di backup per una risorsa protetta, esso crea un punto di ripristino all'interno del vault dei servizi di ripristino. È quindi possibile usare uno di questi punti di ripristino per ripristinare i dati a un dato momento.
Creare un vault di Servizi di ripristino con il comando az backup vault create. Usare il gruppo di risorse e la posizione come quella della macchina virtuale che si vuole proteggere. Informazioni su come creare una macchina virtuale Windows e una macchina virtuale Linux usando l'interfaccia della riga di comando di Azure.
Per questo articolo si userà:
- Un gruppo di risorse denominato SQLResourceGroup
- Una macchina virtuale denominata testSQLVM
- Risorse nella località westus2 .
Eseguire il comando seguente per creare una cassaforte denominata SQLVault.
az backup vault create --resource-group SQLResourceGroup \
--name SQLVault \
--location westus2
Per impostazione predefinita, l'insieme di credenziali di Servizi di ripristino è impostato per l'archiviazione con ridondanza geografica. L'archiviazione con ridondanza geografica assicura che i dati di backup vengano replicati in un'area di Azure secondaria anche se si trova a centinaia di chilometri di distanza dall'area primaria. Se è necessario modificare l'impostazione di ridondanza dell'archiviazione, usare il comando az backup vault backup-properties set.
az backup vault backup-properties set \
--name SQLVault \
--resource-group SQLResourceGroup \
--backup-storage-redundancy "LocallyRedundant/GeoRedundant"
Per verificare se il vault è stato creato correttamente, usare il comando az backup vault list. La risposta viene visualizzata come:
Location Name ResourceGroup
--------- --------------- -------------
westus2 SQLVault SQLResourceGroup
Registrare e proteggere il SQL Server
Per registrare SQL Server con l'insieme di credenziali di Servizi di ripristino, usare il comando az backup container register. VMResourceId è l'ID risorsa della macchina virtuale creata per installare SQL.
az backup container register --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--resource-id VMResourceId
Nota
Se la macchina virtuale non è presente nello stesso gruppo di risorse dell'archivio, SQLResourceGroup utilizza il gruppo di risorse in cui è stato creato l'archivio.
La registrazione di SQL Server individua automaticamente tutti i relativi database correnti. Tuttavia, per individuare eventuali nuovi database che potrebbero essere aggiunti in futuro, vedere la sezione Individuazione di nuovi database aggiunti alla sezione SQL Server registrata .
Per verificare se l'istanza di SQL Server è stata registrata correttamente nell'insieme di credenziali, usare il comando az backup container list. La risposta viene visualizzata come:
Name Friendly Name Resource Group Type Registration Status
------------------------------------------------------ -------------- -------------------- --------- ----------------------
VMAppContainer;Compute;SQLResourceGroup;testSQLVM testSQLVM SQLResourceGroup AzureWorkload Registered
Nota
Il nome della colonna nell'output precedente fa riferimento al nome del contenitore. Questo nome di contenitore è usato nelle sezioni successive per abilitare i backup e attivarli. Ad esempio, VMAppContainer; Calcolare; SQLResourceGroup; testSQLVM.
Abilitare il backup nel database SQL
Il comando az backup protectable-item list elenca tutti i database individuati nell'istanza DI SQL registrata nel passaggio precedente.
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--protectable-item-type SQLDataBase \
--output table
È necessario trovare il database in questo elenco di cui si vuole eseguire il backup, che viene visualizzato come:
Name Protectable Item Type ParentName ServerName IsProtected
----------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;master SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;model SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;msdb SQLDataBase MSSQLServer testSQLVM NotProtected
Configurare ora il backup per sqldatabase; mssqlserver; database master .
Per configurare e proteggere i backup su un database, usa il comando az backup protection enable-for-azurewl. Specificare il nome del criterio da usare. Per creare una politica usando l'interfaccia a riga di comando, usa il comando az backup policy create. Per questo articolo utilizziamo la policy SQLPolicy .
az backup protection enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqldatabase;mssqlserver;master" \
--protectable-item-type SQLDataBase \
--server-name testSQLVM \
--workload-type SQLDataBase \
--output table
È possibile usare lo stesso comando, se si dispone di un gruppo di disponibilità SQL Always On e si vuole identificare l'origine dati proteggibile all'interno del gruppo di disponibilità. In questo caso, il tipo di elemento proteggibile è SQLAG.
Per verificare se la configurazione di backup precedente è stata completata, usare il comando az backup job list . L'output viene visualizzato come segue:
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master 2019-12-03T03:09:210831+00:00
Il comando az backup job list elenca tutti i processi di backup (pianificati o su richiesta) eseguiti o attualmente in esecuzione nel database protetto, oltre ad altre operazioni, ad esempio registrare, configurare il backup ed eliminare i dati di backup.
Nota
Backup di Azure non si adatta automaticamente ai cambiamenti dell'ora legale durante il backup di un database SQL che viene eseguito su una VM di Azure.
Modificare manualmente i criteri in base alle esigenze.
Abilitare la protezione automatica
Per una configurazione di backup senza problemi, tutti i database aggiunti in futuro possono essere protetti automaticamente con un determinato criterio. Per abilitare la protezione automatica, usare il comando az backup protection auto-enable-for-azurewl .
Poiché l'istruzione consiste nel eseguire il backup di tutti i database futuri, l'operazione viene eseguita a livello di SQLInstance .
az backup protection auto-enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqlinstance;mssqlserver" \
--protectable-item-type SQLInstance \
--server-name testSQLVM \
--workload-type MSSQL\
--output table
Attivare un backup su richiesta
Per attivare un backup su richiesta, usare il comando az backup protection backup-now .
Nota
Il periodo di conservazione di questo backup è determinato dal tipo di backup su richiesta eseguito.
- Su richiesta completa conserva i backup per un minimo di 45 giorni e un massimo di 99 anni.
- Copia su richiesta solo completa accetta qualsiasi valore per la conservazione.
- Il backup differenziale su richiesta è mantenuto in base alla conservazione dei differenziali pianificati definiti nei criteri.
- Il log su richiesta mantiene i backup secondo la politica di conservazione dei log pianificati.
az backup protection backup-now --resource-group SQLResourceGroup \
--item-name "sqldatabase;mssqlserver;master" \
--vault-name SQLVault \
--container-name "VMAppContainer;Compute;SQLResourceGroup;testSQLVM" \
--backup-type Full \
--retain-until 01-01-2040 \
--output table
L'output viene visualizzato come segue:
Name ResourceGroup
------------------------------------ -------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 sqlResourceGroup
La risposta fornisce il nome del lavoro. È possibile usare questo nome del processo per tenere traccia dello stato del processo usando il comando az backup job show .
Configura il backup snapshot dell'istanza SQL
I seguenti esempi di snapshot utilizzano la sintassi della shell PowerShell, inclusi backtick per la continuazione della linea e array splatting per argomenti comuni della CLI. Non sono script Bash. Usa una versione interfaccia della riga di comando di Azure che esponga le opzioni snapshot mostrate qui, e rivedi la matrice di supporto degli snapshot e i prerequisiti per snapshot.
Sostituisci tutti i segnaposto prima di eseguire un comando. Esegui solo l'operazione prevista; gli esempi sono workflow separati, non un singolo script da eseguire per intero.
Imposta le variabili di backup snapshot
Usa l'abbonamento e il gruppo risorse del vault, anche se la VM è in un altro abbonamento:
$vaultSubscription = "<vault-subscription-id>"
$vaultRg = "<vault-rg>"
$vaultName = "<vault-name>"
$sourceVm = "<source-vm-name>"
$instanceName = "<instance-name>"
$snapshotRg = "<snapshot-resource-group-name>"
$uamiId = "/subscriptions/<subscription-id>/resourceGroups/<identity-rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>"
$vaultArgs = @("--subscription", $vaultSubscription, "--resource-group", $vaultRg, "--vault-name", $vaultName)
az backup vault show --subscription $vaultSubscription --resource-group $vaultRg --name $vaultName
Preparare file di policy snapshot
Imposta $snapshotRg sul nome effettivo del gruppo di risorse snapshot. Questo esempio utilizza la ritenzione giornaliera e dei log di sette giorni, con la ritenzione istantanea di istantanee di cinque giorni. La conservazione giornaliera e dei log deve durare almeno sette giorni; la ritenzione istantanea degli snapshot è configurata separatamente.
Leggi l'identità gestita assegnata dall'utente e crea l'oggetto policy:
$identityJson = az identity show --ids $uamiId --output json
if ($LASTEXITCODE -ne 0) { throw "Could not read the managed identity." }
$identity = $identityJson | ConvertFrom-Json
$snapshotTime = "2026-10-15T02:00:00Z"
$policy = @{
properties = @{
backupManagementType = "AzureWorkload"
workLoadType = "SQLInstance"
vmWorkloadPolicyType = "SnapshotV2"
settings = @{ timeZone = "UTC"; issqlcompression = $false; isCompression = $false }
subProtectionPolicy = @(
@{
policyType = "SnapshotFull"
schedulePolicy = @{
schedulePolicyType = "SimpleSchedulePolicy"
scheduleRunFrequency = "Daily"
scheduleRunTimes = @($snapshotTime)
}
retentionPolicy = @{
retentionPolicyType = "LongTermRetentionPolicy"
dailySchedule = @{
retentionTimes = @($snapshotTime)
retentionDuration = @{ count = 7; durationType = "Days" }
}
}
snapshotBackupAdditionalDetails = @{
instantRpRetentionRangeInDays = 5
instantRPDetails = $snapshotRg
userAssignedManagedIdentityDetails = @{
identityArmId = $uamiId
identityName = $identity.name
userAssignedIdentityProperties = @{
clientId = $identity.clientId
principalId = $identity.principalId
}
}
}
},
@{
policyType = "Log"
schedulePolicy = @{
schedulePolicyType = "LogSchedulePolicy"
scheduleFrequencyInMins = 60
}
retentionPolicy = @{
retentionPolicyType = "SimpleRetentionPolicy"
retentionDuration = @{ count = 7; durationType = "Days" }
}
}
)
}
}
Salva la policy snapshot-and-log prima di rimuovere la sottopolicy del log per creare un file separato solo per snapshot:
$policy | ConvertTo-Json -Depth 100 |
Set-Content -Encoding utf8 ".\sqlinst-snaplog-policy.json"
$policy.properties.subProtectionPolicy = @(
$policy.properties.subProtectionPolicy | Where-Object policyType -eq "SnapshotFull"
)
$policy | ConvertTo-Json -Depth 100 |
Set-Content -Encoding utf8 ".\sqlinst-snapshot-policy.json"
Crea criteri di snapshot
Crea le due policy dai rispettivi file. Seleziona il criterio più adatto alle tue esigenze di protezione quando abiliti il backup:
az backup policy create @vaultArgs --name "SqlInst-SnapLog" `
--backup-management-type AzureWorkload --workload-type SQLInstance `
--policy ".\sqlinst-snaplog-policy.json"
az backup policy create @vaultArgs --name "SqlInst-SnapOnly" `
--backup-management-type AzureWorkload --workload-type SQLInstance `
--policy ".\sqlinst-snapshot-policy.json"
az backup policy show @vaultArgs --name "SqlInst-SnapLog" --output json
Registra la VM per la protezione dell'istanza
Per una VM in un'altra sottoscrizione, fornisci il relativo ID della risorsa e la sottoscrizione del contenitore. L'alias opzionale --container-sub-id può sostituire --container-subscription-id:
az backup container register @vaultArgs `
--resource-id "/subscriptions/<vm-subscription-id>/resourceGroups/<vm-rg>/providers/Microsoft.Compute/virtualMachines/<vm-name>" `
--backup-management-type AzureWorkload --workload-type SQLInstance `
--container-subscription-id "<vm-subscription-id>"
Scopri istanze che possono essere protette
Discovery utilizza MSSQL per i componenti SQL. Elencare i componenti, filtrare le istanze per server, poi recuperare l'istanza prevista:
az backup protectable-item list @vaultArgs --workload-type MSSQL --output json
az backup protectable-item list @vaultArgs --workload-type MSSQL `
--protectable-item-type SQLInstance --server-name $sourceVm --output json
az backup protectable-item show @vaultArgs --workload-type MSSQL `
--protectable-item-type SQLInstance --name $instanceName --server-name $sourceVm --output json
Abilita la protezione degli snapshot
Seleziona la policy snapshot e i database utente per proteggere:
az backup protection enable-for-azurewl @vaultArgs `
--policy-name "SqlInst-SnapLog" --workload-type SQLInstance `
--protectable-item-type SQLInstance --protectable-item-name $instanceName `
--server-name $sourceVm --child-database-names "Testdb1" "Testdb2" "Testdb4"
Attiva un backup snapshot on-demand
Elenca i contenitori registrati e gli oggetti protetti. Copia i loro esatti nomi nativi invece di inventarli:
az backup container list @vaultArgs --backup-management-type AzureWorkload `
--query "[].{Name:name,VM:properties.friendlyName}" --output table
$containerName = "<native-source-container-name>"
$sourceArgs = $vaultArgs + @("--container-name", $containerName, "--backup-management-type", "AzureWorkload")
az backup item list @sourceArgs --workload-type SQLInstance --output json
$instanceItemName = "<native-protected-instance-item-name>"
$instanceArgs = $sourceArgs + @("--item-name", $instanceItemName, "--workload-type", "SQLInstance")
$retainUntil = (Get-Date).ToUniversalTime().AddDays(45).ToString("dd-MM-yyyy-HH:mm:ss")
az backup protection backup-now @instanceArgs --backup-type SnapshotFull --retain-until $retainUntil
Usa il nome del lavoro restituito con az backup job show per monitorare i progressi. Per i comandi del punto di ripristino e di ripristino, vedi Ripristina snapshot delle istanze SQL.
Passaggi successivi
- Informazioni su come ripristinare un database SQL nella macchina virtuale di Azure usando l'interfaccia della riga di comando.
- Informazioni su come eseguire il backup di un database SQL in esecuzione in una macchina virtuale di Azure usando il portale di Azure.
Contenuti correlati
- Eseguire il backup di database di SQL Server in macchine virtuali di Azure usando Backup di Azure tramite l'API REST.
- Ripristinare i database di SQL Server nelle macchine virtuali di Azure con l'API REST.
- Gestire i database di SQL Server in macchine virtuali di Azure con il portale di Azure, l'interfaccia della riga di comando di Azure, l'API REST.