Copia de seguridad de las bases de datos de SQL en una máquina virtual de Azure con la CLI de Azure
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
Consulte los escenarios admitidos actualmente para SQL en las máquinas virtuales de Azure.
Prerrequisitos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en 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 Inicio de sesión con 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 más información sobre las extensiones, consulte Uso 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
- Los recursos de 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, el almacén de Recovery Services se establece 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 la instancia de 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 comprobar si la instancia de SQL se ha registrado correctamente en el almacén. 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 proteger y configurar copias de seguridad de una base de datos, de una en una, se usa 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. En este artículo hemos usado la directiva testSQLPolicy.
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 a 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.