Share via


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.

Pasos siguientes