Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
La CLI de Azure se usa para crear y administrar los recursos de Azure desde la línea de comandos o mediante scripts. En este artículo se describe cómo realizar una copia de seguridad de una base de datos de SQL en una máquina virtual de Azure y desencadenar copias de seguridad a petición mediante la CLI de Azure. También puede llevar a cabo estas acciones con Azure Portal.
En este artículo se da por supuesto que ya tiene una base de datos de SQL instalada en una máquina virtual de Azure. (También puede crear una máquina virtual mediante la CLI de Azure).
En este artículo, aprenderá a:
- Creación de un almacén de Recovery Services
- Registro de una instancia de SQL Server y detección de bases de datos en ella
- Habilitación de la copia de seguridad en una base de datos de SQL
- Desencadenamiento de una copia de seguridad a petición
Para ver los escenarios de copia de seguridad y restauración que se admiten en la actualidad, consulte la matriz de compatibilidad. Para preguntas comunes, consulte las preguntas más frecuentes.
Prerrequisitos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
Creación de un almacén de Recovery Services
Un almacén de Recovery Services es un contenedor lógico que almacena los datos de copia de seguridad de los recursos protegidos, como las máquinas virtuales de Azure o las cargas de trabajo que se ejecutan en estas (como las bases de datos de SQL o de HANA). Cuando se ejecuta el trabajo de copia de seguridad para un recurso protegido, crea un punto de recuperación en el almacén de Recovery Services. Posteriormente, se puede usar uno de estos puntos de recuperación para restaurar los datos a un momento dado en el tiempo.
Cree un almacén de Recovery Services con el comando az backup vault create. Use el mismo grupo de recursos y ubicación de la máquina virtual que desea proteger. Aprenda a crear una máquina virtual Windows y una máquina virtual Linux con la CLI de Azure.
En este artículo, usaremos:
- Un grupo de recursos denominado SQLResourceGroup
- Una máquina virtual denominada testSQLVM
- Recursos en la ubicación westus2.
Ejecute el comando siguiente para crear un almacén denominado SQLVault.
az backup vault create --resource-group SQLResourceGroup \
--name SQLVault \
--location westus2
De forma predeterminada, la bóveda de Recovery Services está configurada para el almacenamiento con redundancia geográfica. El almacenamiento con redundancia geográfica garantiza que los datos de copia de seguridad se replican en una región de Azure secundaria aunque se encuentre a cientos de kilómetros de distancia de la región primaria. Si es necesario modificar la configuración de redundancia del almacenamiento, utilice el comando az backup vault backup-properties set.
az backup vault backup-properties set \
--name SQLVault \
--resource-group SQLResourceGroup \
--backup-storage-redundancy "LocallyRedundant/GeoRedundant"
Para comprobar si el almacén se ha creado correctamente, use el comando az backup vault list. La respuesta aparece como:
Location Name ResourceGroup
--------- --------------- -------------
westus2 SQLVault SQLResourceGroup
Registro y protección de SQL Server
Para registrar SQL Server con el almacén de Recovery Services, use el comando az backup container register. VMResourceId es el identificador de recurso de la máquina virtual que creó para instalar SQL.
az backup container register --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--resource-id VMResourceId
Nota
Si la máquina virtual no está en el mismo grupo de recursos que el almacén, SQLResourceGroup usará el grupo de recursos donde se creó el almacén.
Al registrar el servidor SQL se detectan automáticamente todas sus bases de datos actuales. Sin embargo, para detectar las nuevas que se puedan agregar en el futuro, consulte la sección Detección de las nuevas bases de datos agregadas a SQL Server tras su registro.
Use el comando az backup container list para verificar si la instancia de SQL se ha registrado exitosamente en tu bóveda. La respuesta aparece como:
Name Friendly Name Resource Group Type Registration Status
------------------------------------------------------ -------------- -------------------- --------- ----------------------
VMAppContainer;Compute;SQLResourceGroup;testSQLVM testSQLVM SQLResourceGroup AzureWorkload Registered
Nota
La columna name de la salida anterior hace referencia al nombre del contenedor. Este nombre de contenedor se usa en las secciones siguientes para habilitar las copias de seguridad y desencadenarlas. Por ejemplo, VMAppContainer;Compute;SQLResourceGroup;testSQLVM.
Habilitación de la copia de seguridad en la base de datos de SQL
El comando az backup protectable-item list enumera todas las bases de datos detectadas en la instancia de SQL que registró en el paso anterior.
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--protectable-item-type SQLDataBase \
--output table
Debería encontrar la base de datos de la que desea realizar una copia de seguridad en esta lista, que tendrá el siguiente aspecto:
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
Ahora, configure la copia de seguridad para la base de datos sqldatabase;mssqlserver;master.
Para configurar y proteger copias de seguridad en una base de datos, utiliza el comando az backup protection enable-for-azurewl. Proporcione el nombre de la directiva que desee usar. Para crear una directiva mediante la CLI, use el comando az backup policy create. Para este artículo, utilizamos la política 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
Puede usar el mismo comando si tiene un grupo de disponibilidad de SQL Always On y desea identificar el origen de datos que se puede proteger dentro del grupo de disponibilidad. Aquí, el tipo de elemento que se puede proteger es SQLAG.
Para comprobar si se ha completado la configuración de copia de seguridad anterior, use el comando az backup job list. La salida tiene el siguiente aspecto:
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master 2019-12-03T03:09:210831+00:00
El comando az backup job list enumera todos los trabajos de copia de seguridad (programados o a petición) que se han ejecutado o que se están ejecutando actualmente en la base de datos protegida, además de otras operaciones como el registro, la configuración de la copia de seguridad y la eliminación de datos de la copia de seguridad.
Nota
Azure Backup no se ajusta automáticamente a los cambios del horario de verano cuando se realiza la copia de seguridad de una base de datos de SQL en una máquina virtual de Azure.
Modifique la directiva de forma manual según sea necesario.
Habilitación de la protección automática
Para una configuración de copia de seguridad correcta, todas las bases de datos que se agreguen en el futuro se pueden proteger automáticamente con una determinada directiva. Para habilitar la protección automática, use el comando az backup protection auto-enable-for-azurewl.
Puesto que la indicación es realizar la copia de seguridad de todas las bases de datos futuras, la operación se realiza a nivel de 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
Desencadenamiento de una copia de seguridad a petición
Para desencadenar una copia de seguridad a petición, utilice el comando az backup protection backup-now.
Nota
El período de retención de esta copia de seguridad viene determinado por el tipo de copia de seguridad a petición que se haya ejecutado.
- Completa a petición conserva las copias de seguridad durante un mínimo de 45 días y un máximo de 99 años.
- Solo copia a petición completa acepta cualquier valor para la retención.
- La copia diferencial a petición conserva la copia de seguridad según la retención delas copias diferenciales programadas establecidos en la directiva.
- Registro a petición conserva las copias de seguridad según la retención de registros programados establecidos en la directiva.
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
La salida tiene el siguiente aspecto:
Name ResourceGroup
------------------------------------ -------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 sqlResourceGroup
La respuesta le proporcionará el nombre del trabajo. Puede usar este nombre de trabajo para realizar un seguimiento del estado del trabajo mediante el comando az backup job show.
Configurar la copia de seguridad de instantánea de instancia SQL
Los siguientes ejemplos de instantáneas utilizan la sintaxis del shell de PowerShell, incluyendo backticks para la continuación de línea y splatting de arrays para argumentos comunes de CLI. No son scripts de Bash. Utiliza una versión de CLI de Azure que exponga las opciones de snapshot mostradas aquí, y revisa la matriz de soporte para snapshots y los requisitos previos para snapshots.
Cambia todos los marcadores de posición antes de ejecutar un comando. Ejecuta solo la operación prevista; los ejemplos son flujos de trabajo separados, no un único script que debe ejecutarse por completo.
Configurar las variables de la copia de seguridad de instantáneas
Use la suscripción y el grupo de recursos del almacén, aunque la máquina virtual esté en otra suscripción:
$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
Preparar archivos de política de instantáneas
Establezca $snapshotRg en el nombre real del grupo de recursos de la instantánea. Este ejemplo utiliza retención diaria y de registros de siete días, con retención de instantáneas de cinco días. La retención diaria y de registros debe ser de al menos siete días; la retención de instantáneas instantáneas se configura por separado.
Lee la identidad gestionada asignada por el usuario y crea el objeto de política:
$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" }
}
}
)
}
}
Guarda la política de instantáneas y registros antes de eliminar la subpolítica de registro para crear un archivo independiente de solo instantáneas:
$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"
Crear directivas de instantáneas
Crea las dos políticas a partir de sus respectivos archivos. Selecciona la política adecuada para tus necesidades de protección al habilitar una copia de seguridad:
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
Registrar la máquina virtual para la protección de instancias
Para una máquina virtual en otra suscripción, proporciona su ID de recurso y la suscripción al contenedor. El alias opcional --container-sub-id puede sustituir --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>"
Detectar las instancias que se pueden proteger
Discovery usa MSSQL para componentes SQL. Lista los componentes, filtra las instancias por servidor y luego recupera la instancia 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
Habilitar la protección de instantáneas
Seleccione la política de instantáneas y las bases de datos de usuarios para proteger:
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"
Activa una copia de seguridad de instantánea bajo demanda
Haz una lista de los contenedores registrados y los elementos protegidos. Copie sus nombres nativos exactos en lugar de construirlos:
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 el nombre del trabajo devuelto con az backup job show para monitorizar el progreso. Para ver los comandos de punto de recuperación y de restauración, consulte Restaurar las instantáneas de instancias de SQL.
Pasos siguientes
- Aprenda a restaurar una base de datos de SQL en una máquina virtual de Azure mediante la CLI.
- Aprenda a realizar una copia de seguridad de una base de datos de SQL que se ejecuta en una máquina virtual de Azure mediante Azure Portal.
Contenido relacionado
- Realice una copia de seguridad de bases de datos de SQL Server en máquinas virtuales de Azure mediante Azure Backup mediante la API REST.
- Restaure las bases de datos de SQL Server en máquinas virtuales de Azure con la API REST.
- Administre las bases de datos de SQL Server en máquinas virtuales de Azure con Azure Portal, la CLI de Azure y la API REST.