Automated Backup para SQL Server 2014 en máquinas virtuales (Resource Manager)

Se aplica a: SQL Server en VM de Azure

Automated Backup configura automáticamente Automated Backup para Microsoft Azure para todas las bases de datos existentes y nuevas en una máquina virtual de Azure que ejecuta SQL Server 2014 Standard y Enterprise. Esto permite configurar copias periódicas de bases de datos que usan el almacenamiento duradero de Azure Blob Storage. Automated Backup depende de la Extensión del agente de IaaS (infraestructura como servicio) de SQL Server.

Requisitos previos

A fin de usar copias de seguridad automatizadas para SQL Server en una máquina virtual de Azure, necesita lo siguiente:

  • Una instancia de SQL Server en máquinas virtuales de Azure registrado con la extensión Agente de IaaS de SQL.
  • Windows Server 2012 o posterior.
  • SQL Server 2014, Standard o Enterprise. Para versiones posteriores de SQL Server, vea Copia de seguridad automatizada para SQL Server 2016 y versiones posteriores.
  • Configuración de base de datos:
    • Las bases de datos de usuario de destino deben utilizar el modelo de recuperación completa. Las bases de datos del sistema no tienen que usar el modelo de recuperación completa. Aun así, sí debe usar el modelo de recuperación completa si necesita realizar copias de seguridad de registros para model o msdb. Para obtener más información sobre el impacto del modelo de recuperación completa en las copias de seguridad, vea Copia de seguridad en el modelo de recuperación completa.
    • La VM con SQL Server se registró con la extensión Agente de IaaS de SQL y la característica de copia de seguridad automatizada está habilitada. Como la copia de seguridad automatizada se basa en la extensión, solo se admite en las bases de datos de destino de la instancia predeterminada o en una instancia con nombre única. Si no hay ninguna instancia predeterminada y hay varias instancias con nombre, se producirá un error en la extensión Agente de IaaS de SQL y la copia de seguridad automatizada no funcionará.

Configuración

En la siguiente tabla se describen las opciones que pueden configurarse para Automated Backup. Los pasos de configuración reales varían si usa Azure Portal o comandos de Windows PowerShell de Azure. Tenga en cuenta que la copia de seguridad automatizada usa la compresión de copia de seguridad de manera predeterminada y no se puede deshabilitar.

Configuración Intervalo (valor predeterminado) Descripción
Automated Backup Habilitar/deshabilitar (deshabilitado) Habilita o deshabilita Automated Backup para una máquina virtual de Azure que ejecuta SQL Server 2014 Standard o Enterprise.
Período de retención 1-90 días (90 días) El número de días para retener una copia de seguridad.
Storage Account Cuenta de almacenamiento de Azure Una cuenta de almacenamiento de Azure que usar para almacenar archivos de Automated Backup en el almacenamiento de blobs. Se crea un contenedor en esta ubicación para guardar todos los archivos de copia de seguridad. La convención de nomenclatura del archivo de copia de seguridad incluye la fecha, la hora y el nombre de máquina.
Cifrado Habilitar/deshabilitar (deshabilitado) Habilita o deshabilita el cifrado de copia de seguridad. Cuando se habilita el cifrado de copia de seguridad, los certificados usados para restaurar la copia de seguridad se ubican en la cuenta de almacenamiento especificada en el mismo contenedor automaticbackup con la misma convención de nomenclatura. Si la contraseña cambia, se genera un nuevo certificado con esa contraseña, pero el certificado antiguo permanece para restaurar copias de seguridad anteriores.
Contraseña Texto de contraseña Una contraseña para claves de cifrado. Esto solo es necesario si se habilita el cifrado. Para restaurar una copia de seguridad cifrada, debe disponer de la contraseña correcta y del certificado relacionado que se usó en el momento en el que se realizó la copia de seguridad.

Configuración de máquinas virtuales nuevas

Use Azure Portal para configurar la opción Automated Backup cuando cree una máquina virtual de SQL Server 2014 en el modelo de implementación de Resource Manager.

En la pestaña Configuración de SQL Server, desplácese hacia abajo hasta Copia de seguridad automatizada y seleccione Habilitar. La siguiente captura de pantalla de Azure Portal muestra la opción de configuración Copia de seguridad automatizada de SQL.

Captura de pantalla de la configuración de Automated Backup de SQL en Azure Portal.

Configuración de máquinas virtuales existentes

En las máquinas virtuales con SQL Server existentes, desde Azure Portal se pueden habilitar y deshabilitar las copias de seguridad automatizadas, cambiar el período de retención, especificar la cuenta de almacenamiento y habilitar el cifrado.

Vaya al recurso de máquinas virtuales SQL de la máquina virtual con SQL Server 2014 y seleccione Copias de seguridad.

Captura de pantalla de Automated Backup de SQL para VM existentes.

Cuando termine, seleccione el botón Aplicar de la parte inferior de la página Copias de seguridad para guardar los cambios.

Si habilita la copia de seguridad automatizada por primera vez, Azure configura el Agente de IaaS de SQL Server en segundo plano. Durante este tiempo, es posible que Azure Portal no muestre que se ha configurado Automated Backup. Espere unos minutos hasta que el agente se instale y configure. Después, Azure Portal mostrará la configuración nueva.

Nota:

También puede usar una plantilla para configurar Automated Backup. Para más información, consulte la plantilla de inicio rápido de Azure para Automated Backup.

Configuración con PowerShell

Puede usar PowerShell para configurar la copia de seguridad automatizada. Antes de comenzar:

Nota:

En este artículo se usa el módulo Az de PowerShell, que es el módulo de PowerShell que se recomienda para interactuar con Azure. Para empezar a trabajar con el módulo Az de PowerShell, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Verificación de la configuración actual

Si ha habilitado la copia de seguridad automatizada durante el aprovisionamiento, puede usar PowerShell para comprobar la configuración actual. Ejecute el comando Get-AzVMSqlServerExtension y examine la propiedad AutoBackupSettings:

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"

(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings

Debería obtener una salida similar a la siguiente:

Enable                      : False
EnableEncryption            : False
RetentionPeriod             : -1
StorageUrl                  : NOTSET
StorageAccessKey            : 
Password                    : 
BackupSystemDbs             : False
BackupScheduleType          : 
FullBackupFrequency         : 
FullBackupStartTime         : 
FullBackupWindowHours       : 
LogBackupFrequency          : 

Si la salida muestra que la opción Habilitar está establecida en False, tiene que habilitar la copia de seguridad automatizada. Lo bueno es que habilita y configura Automated Backup de la misma manera. Vea la sección siguiente para leer esta información.

Nota:

Si comprueba la configuración inmediatamente después de realizar un cambio, es posible que obtenga los valores de configuración anteriores. Espere unos minutos y compruebe la configuración de nuevo para asegurarse de que se hayan aplicado los cambios.

Configurar Automated Backup

Puede usar PowerShell para habilitar Automated Backup, así como para modificar su configuración y comportamiento en cualquier momento.

En primer lugar, seleccione o cree una cuenta de almacenamiento para los archivos de copia de seguridad. El script siguiente selecciona una cuenta de almacenamiento o la crea si no existe.

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

Nota:

Automated Backup no permite almacenar las copias de seguridad en Premium Storage, pero pueden realizar copias de seguridad de discos de VM que usan Premium Storage.

Si desea usar un contenedor personalizado en la cuenta de almacenamiento para las copias de seguridad, use el siguiente script para comprobar el contenedor o crearlo si no existe.

$storage_container = "backupcontainer"

New-AzStorageContainer -Name $storage_container -Context $storage.Context

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

A continuación, Para obtener una clave de acceso para la cuenta de almacenamiento, utilice el siguiente script:

$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

Luego, utilice el comando Update-AzSqlVM para habilitar y configurar los valores de Copia de seguridad automatizada para almacenar copias de seguridad en la cuenta de Azure Storage. En este ejemplo, las copias de seguridad están configuradas para que se conserven durante 10 días.

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingStorageContainerName $storage_container 

La instalación y configuración del agente de Iaas de SQL Server puede tardar algunos minutos.

Nota:

Hay otras opciones de Update-AzSqlVM* que solo se aplican a SQL Server 2016 y Automated Backup. SQL Server 2014 no admite la siguiente configuración: -AutoBackupSettingBackupSystemDb, -AutoBackupSettingBackupScheduleType, -AutoBackupSettingFullBackupFrequency, -AutoBackupSettingFullBackupStartTime, -AutoBackupSettingFullBackupWindowHour y -AutoBackupSettingLogBackupFrequency. Si intenta configurar estas opciones en una máquina virtual de SQL Server 2014, no hay ningún error, pero no se aplica la configuración. Si quiere usar estas opciones en una máquina virtual de SQL Server 2016, vea Automated Backup para máquinas virtuales de Azure con SQL Server 2016.

Para habilitar el cifrado, modifique el script anterior para pasar el parámetro -AutoBackupSettingEnableEncryption junto con una contraseña (cadena segura) para el parámetro -AutoBackupSettingPassword. El siguiente script habilita la configuración de Automated Backup en el ejemplo anterior y agrega cifrado.

$password = "r@ndom Va1ue"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force  

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingEnableEncryption `
-AutoBackupSettingPassword $encryptionpassword `
-AutoBackupSettingStorageContainerName $storage_container 

Para confirmar que se ha aplicado la configuración, verifique la configuración de Automated Backup.

Deshabilitar Automated Backup

Para deshabilitar Automated Backup, ejecute el mismo script con el parámetro -AutoBackupSettingEnable establecido en $false en el comando Update-AzSqlVM. Al establecer el valor como $false, se deshabilita la característica. Al igual que la instalación, la deshabilitación de Automated Backup puede tardar algunos minutos.

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable:$false

Script de ejemplo

El script siguiente proporciona un conjunto de variables que se pueden personalizar para habilitar y configurar Automated Backup para la VM. En su caso, debe personalizar el script en función de sus requisitos. Por ejemplo, debe realizar cambios si desea deshabilitar la copia de seguridad de bases de datos del sistema o habilitar el cifrado.

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$retentionperiod = 10

# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension

Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region

# Creates/use a storage account to store the backups

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

# Creates/uses a custom storage account container

$storage_container = "yourbackupcontainer"

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

# Get storage account access key
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

# Configure Automated Backup settings

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod $retentionperiod `
-AutoBackupSettingStorageContainerName $storage_container 

Copia de seguridad con certificados de cifrado

Si decides cifrar las copias de seguridad, se generará un certificado de cifrado y se guardará en la misma cuenta de almacenamiento que las copias de seguridad. En este escenario, también tendrás que escribir una contraseña que se usará para proteger los certificados de cifrado usados a fin de cifrar y descifrar las copias de seguridad. Esto te permite no tener que preocuparte por las copias de seguridad más allá de la configuración de esta característica y también garantiza que puedas confiar en que las copias de seguridad sean seguras.

Cuando se habilita el cifrado de copia de seguridad, se recomienda encarecidamente determinar si el certificado de cifrado se ha creado y cargado correctamente para garantizar la restauración de las bases de datos. Para ello, crea una base de datos inmediatamente y comprueba que se ha realizado correctamente una copia de seguridad de los certificados de cifrado y los datos en el contenedor recién creado. Esto muestra que todo se ha configurado correctamente y que no se produjeron anomalías.

Si el certificado no se pudo cargar por algún motivo, puedes usar el administrador de certificados para exportar el certificado y guardarlo. No obstante, no es buena idea guardarlo en la misma VM, ya que esto no garantiza que tengas acceso al certificado cuando la VM esté inactiva. Para saber si se realizó correctamente la copia de seguridad del certificado después de cambiar o crear la configuración de Copia de seguridad automatizada, puede comprobar los registros de eventos en la VM y, si se produjo un error, verá este mensaje de error:

Captura de pantalla en la que se muestra el error en el registro de eventos en la VM.

Si se ha hecho una copia de seguridad de los certificados correctamente, verá este mensaje en los registros de eventos:

Captura de pantalla de la copia de seguridad correcta del certificado de cifrado en los registros de eventos.

Como práctica común, se recomienda comprobar el estado de las copias de seguridad de vez en cuando. Para poder restaurar las copias de seguridad, debes hacer lo siguiente:

  1. Confirma que se ha realizado la copia de seguridad de los certificados de cifrado y que recuerdas la contraseña. Si no lo hace, no podrá descifrar ni restaurar las copias de seguridad. Si por algún motivo no se ha realizado correctamente la copia de seguridad de los certificados, puede hacerlo manualmente si ejecuta la siguiente consulta de T-SQL:

    BACKUP MASTER KEY TO FILE = <file_path> ENCRYPTION BY PASSWORD = <password>
    BACKUP CERTIFICATE [AutoBackup_Certificate] TO FILE = <file_path> WITH PRIVATE KEY (FILE = <file_path>, ENCRYPTION BY PASSWORD = <password>)
    
  2. Confirma que los archivos de copia de seguridad se cargan con al menos una copia de seguridad completa. Dado que a veces se producen errores, debes asegurarte de que siempre tienes al menos una copia de seguridad completa antes de eliminar la VM o, en caso de que la VM esté dañada, de modo que sigas pudiendo acceder a los datos. Debes asegurarte de que la copia de seguridad en el almacenamiento es segura y recuperable antes de eliminar los discos de datos de la VM.

Supervisión

Para supervisar Automated Backup en SQL Server 2014, tienes dos opciones principales. Puesto que Automated Backup usa la característica Copia de seguridad de administrada SQL Server, las mismas técnicas de supervisión se aplican a ambos.

En primer lugar, puede sondear el estado mediante una llamada a msdb.smart_admin.sp_get_backup_diagnostics. O bien consultar la función con valores de tabla msdb.smart_admin.fn_get_health_status.

Nota:

El esquema de Copia de seguridad administrada de SQL Server 2014 es msdb.smart_admin. En SQL Server 2016, cambió a msdb.managed_backup, y los temas de referencia utilizan este esquema más reciente. Pero para SQL Server 2014, debe seguir usando el esquema smart_admin para todos los objetos de Copia de seguridad administrada.

Otra opción es aprovechar las ventajas de la característica integrada Correo electrónico de base de datos para las notificaciones.

  1. Llame al procedimiento almacenado msdb.smart_admin.sp_set_parameter para asignar una dirección de correo electrónico al parámetro SSMBackup2WANotificationEmailIds.
  2. Habilite SendGrid para enviar los mensajes de correo electrónico desde la VM de Azure.
  3. Utilice el nombre de usuario y el servidor SMTP para configurar Correo electrónico de base de datos. Puede configurar Correo electrónico de base de datos en SQL Server Management Studio o con comandos de Transact-SQL. Para obtener más información, consulte Correo electrónico de base de datos.
  4. Configurar el Agente SQL Server para que use el Correo electrónico de base de datos.
  5. Compruebe que el puerto SMTP está permitido tanto a través del firewall de VM local como del grupo de seguridad de red para la VM.

Pasos siguientes

Automated Backup configura Copia de seguridad administrada en Azure Virtual Machines. Por lo tanto, es importante revisar la documentación de Managed Backup en SQL Server 2014.

Puede encontrar directrices adicionales sobre la copia de seguridad y la restauración para SQL Server en VM de Azure en el siguiente artículo: Copias de seguridad y restauración para SQL Server en máquinas virtuales de Azure.

Para más información acerca de otras tareas de automatización disponibles, consulte la extensión Agente de IaaS de SQL Server.

Para más información sobre cómo ejecutar SQL Server en máquinas virtuales de Azure, consulte Introducción a SQL Server en Azure máquinas virtuales de Azure.