Administración 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 administrar una base de datos SQL con copia de seguridad en máquinas virtuales de Azure mediante la CLI de Azure. También puede llevar a cabo estas acciones con Azure Portal.
En este artículo, aprenderá a:
- Supervisar los trabajos de copia de seguridad y restauración
- Proteger las nuevas bases de datos agregadas a una instancia de SQL
- Cambiar la directiva
- Detener protección
- Reanudar protección
Si ha usado Realización de una copia de seguridad de una base de datos de SQL en Azure mediante la CLI para la copia de seguridad de la base de datos de SQL, estará usando los siguientes recursos:
- Un grupo de recursos denominado SQLResourceGroup
- Un almacén denominado SQLVault
- Un contenedor protegido denominado VMAppContainer;Compute;SQLResourceGroup;testSQLVM
- Un elemento/base de datos con copia de seguridad denominado sqldatabase;mssqlserver;master
- Los recursos de la región westus2
La CLI de Azure facilita el proceso de administración de una base de datos SQL que se ejecuta en una máquina virtual de Azure de la que se realiza una copia de seguridad mediante Azure Backup. En las secciones siguientes se describe cada una de las operaciones de administración.
Nota
Consulte la matriz de compatibilidad de copia de seguridad de SQL para más información sobre las configuraciones y los escenarios admitidos.
Supervisar los trabajos de copia de seguridad y restauración
Para supervisar los trabajos completados o en ejecución (copia de seguridad o restauración), use el comando az backup job list. La CLI también permite suspender un trabajo que se esté ejecutando actualmente o esperar hasta que se complete un trabajo.
az backup job list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--output table
La salida tiene el siguiente aspecto:
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master [testSQLVM] 2019-12-03T03:09:210831+00:00
ccdb4dce-8b15-47c5-8c46-b0985352238f Backup (Full) Completed master [testSQLVM] 2019-12-01T10:30:58.867489+00:00
4980af91-1090-49a6-ab96-13bc905a5282 Backup (Differential) Completed master [testSQLVM] 2019-12-01T10:36:00.563909+00:00
F7c68818-039f-4a0f-8d73-e0747e68a813 Restore (Log) Completed master [testSQLVM] 2019-12-03T05:44:51.081607+00:00
Cambiar una directiva
Para cambiar la directiva subyacente a la configuración de copia de seguridad de SQL, use el comando az backup policy set. El parámetro name de este comando hace referencia al elemento de copia de seguridad cuya directiva se desea cambiar. Aquí, reemplace la directiva de la base de datos SQL sqldatabase;mssqlserver;master por una nueva directiva newSQLPolicy. Puede crear nuevas directivas mediante el comando az backup policy create.
az backup item set-policy --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--policy-name newSQLPolicy \
--name sqldatabase;mssqlserver;master \
La salida tiene el siguiente aspecto:
Name Operation Status Item Name Backup Management Type Start Time UTC Duration
------------------------------------ --------------- --------- ----------- ------------------------ -------------------------------- --------------
ba350996-99ea-46b1-aae2-e2096c1e28cd ConfigureBackup Completed master AzureWorkload 2022-06-22T08:24:03.958001+00:00 0:01:12.435765
Crea una directiva de copia de seguridad diferencial
Para crear una directiva de copia de seguridad diferencial, use el comando az backup policy create con los parámetros siguientes:
- --backup-management-type: carga de trabajo de Azure.
- --workload-type: base de datos de SQL.
- --name: nombre de la directiva.
- --policy: archivo JSON con la información correspondiente de la programación y la retención.
- --resource-group: grupo de recursos del almacén.
- --vault-name: nombre del almacén/
Ejemplo:
az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase
Sample JSON (sqlpolicy.json):
"eTag": null,
"id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupPolicies/SQLPolicy",
"location": null,
"name": "sqlpolicy",
"properties": {
"backupManagementType": "AzureWorkload",
"workLoadType": "SQLDataBase",
"settings": {
"timeZone": "UTC",
"issqlcompression": false,
"isCompression": false
},
"subProtectionPolicy": [
{
"policyType": "Full",
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Weekly",
"scheduleRunDays": [
"Sunday"
],
"scheduleRunTimes": [
"2022-06-13T19:30:00Z"
],
"scheduleWeeklyFrequency": 0
},
"retentionPolicy": {
"retentionPolicyType": "LongTermRetentionPolicy",
"weeklySchedule": {
"daysOfTheWeek": [
"Sunday"
],
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 104,
"durationType": "Weeks"
}
},
"monthlySchedule": {
"retentionScheduleFormatType": "Weekly",
"retentionScheduleWeekly": {
"daysOfTheWeek": [
"Sunday"
],
"weeksOfTheMonth": [
"First"
]
},
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 60,
"durationType": "Months"
}
},
"yearlySchedule": {
"retentionScheduleFormatType": "Weekly",
"monthsOfYear": [
"January"
],
"retentionScheduleWeekly": {
"daysOfTheWeek": [
"Sunday"
],
"weeksOfTheMonth": [
"First"
]
},
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 10,
"durationType": "Years"
}
}
}
},
{
"policyType": "Differential",
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Weekly",
"scheduleRunDays": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"scheduleRunTimes": [
"2022-06-13T02:00:00Z"
],
"scheduleWeeklyFrequency": 0
},
"retentionPolicy": {
"retentionPolicyType": "SimpleRetentionPolicy",
"retentionDuration": {
"count": 30,
"durationType": "Days"
}
}
},
{
"policyType": "Log",
"schedulePolicy": {
"schedulePolicyType": "LogSchedulePolicy",
"scheduleFrequencyInMins": 120
},
"retentionPolicy": {
"retentionPolicyType": "SimpleRetentionPolicy",
"retentionDuration": {
"count": 15,
"durationType": "Days"
}
}
}
],
"protectedItemsCount": 0
},
"resourceGroup": "SQLResourceGroup",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupPolicies"
}
Una vez que la directiva se crea correctamente, la salida del comando muestra el JSON de la directiva que pasó como parámetro al ejecutar el comando.
Puede modificar la siguiente sección de la directiva para especificar la frecuencia de copia de seguridad requerida y la retención de las copias de seguridad diferenciales.
Por ejemplo:
{
"policyType": "Differential",
"retentionPolicy": {
"retentionDuration": {
"count": 30,
"durationType": "Days"
},
"retentionPolicyType": "SimpleRetentionPolicy"
},
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunDays": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"scheduleRunFrequency": "Weekly",
"scheduleRunTimes": [
"2017-03-07T02:00:00+00:00"
],
"scheduleWeeklyFrequency": 0
}
}
Ejemplo:
Si desea realizar copias de seguridad diferenciales solo los sábados y conservarlas durante 60 días, realice los cambios siguientes en la directiva:
- Actualice el número de retentionDuration a 60 días.
- Especifique solo el sábado en ScheduleRunDays.
{
"policyType": "Differential",
"retentionPolicy": {
"retentionDuration": {
"count": 60,
"durationType": "Days"
},
"retentionPolicyType": "SimpleRetentionPolicy"
},
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunDays": [
"Saturday"
],
"scheduleRunFrequency": "Weekly",
"scheduleRunTimes": [
"2017-03-07T02:00:00+00:00"
],
"scheduleWeeklyFrequency": 0
}
}
Proteger las nuevas bases de datos agregadas a una instancia de SQL
El registro de una instancia de SQL con un almacén de Recovery Services detecta automáticamente todas las bases de datos de esta instancia.
Sin embargo, si ha agregado nuevas bases de datos a la instancia de SQL más adelante, use el comando az backup protectable-item initialize. Este comando detecta las nuevas bases de datos agregadas.
az backup protectable-item initialize --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--workload-type SQLDataBase
A continuación, use el cmdlet az backup protected-item list para eenumerar todas las bases de datos que se hayan detectado en la instancia de SQL. Sin embargo, esta lista excluye las bases de datos en las que ya se haya configurado la copia de seguridad. Una vez detectada la base de datos de la que se va a realizar la copia de seguridad, consulte Habilitación de la copia de seguridad de la base de datos de SQL.
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--protectable-item-type SQLDataBase \
--output table
La nueva base de datos de la que desea realizar una copia de seguridad aparece en esta lista, que tendrá el siguiente aspecto:
Name Protectable Item Type ParentName ServerName IsProtected
--------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;db1 SQLDataBase mssqlserver testSQLVM NotProtected
sqldatabase;mssqlserver;db2 SQLDataBase mssqlserver testSQLVM NotProtected
Detención de protección de una base de datos SQL
Puede dejar de proteger una base de datos SQL en los siguientes procesos:
- Detener todos los trabajos futuros de copia de seguridad y eliminar todos los puntos de recuperación.
- Detener todos los trabajos futuros de copia de seguridad y dejar intactos los puntos de recuperación.
Si decide dejar los puntos de recuperación, tenga en cuenta estos detalles:
- Todos los puntos de recuperación permanecen intactos para siempre y, al detenerse la protección de los datos, se detiene la eliminación de todos los puntos y se conservan los datos.
- Se le cobrará la instancia protegida y el almacenamiento consumido.
- Si elimina un origen de datos sin detener las copias de seguridad, las nuevas copias de seguridad producirán errores.
Los procesos para detener la protección se detallan a continuación.
Detener la protección con conservación de datos
Para detener la protección y conservar los datos, use el comando az backup protection disable.
az backup protection disable --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--workload-type SQLDataBase \
--output table
La salida tiene el siguiente aspecto:
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
Para verificar el estado de esta operación, utilice el comando az backup job show.
Detención de la protección sin conservar los datos
Para detener la protección sin conservar los datos, use el comando az backup protecion disable.
az backup protection disable --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--workload-type SQLDataBase \
--delete-backup-data true \
--output table
La salida tiene el siguiente aspecto:
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
Para verificar el estado de esta operación, utilice el comando az backup job show.
Reanudar protección
Al detener la protección de la base de datos de SQL y conservar los datos, se puede reanudar la protección más adelante. Si no conserva los datos de los que se realizó una copia de seguridad, no podrá reanudar la protección.
Para reanudar la protección, use el comando az backup protectin resume.
az backup protection resume --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--policy-name SQLPolicy \
--output table
La salida tiene el siguiente aspecto:
Name ResourceGroup
------------------------------------ ---------------
b2a7f108-1020-4529-870f-6c4c43e2bb9e SQLResourceGroup
Para verificar el estado de esta operación, utilice el comando az backup job show.