Compartir a través de


Administración de bases de datos SQL en una máquina virtual de Azure mediante 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 de copia de seguridad en una máquina virtual de Azure mediante la CLI de Azure. También puede realizar estas acciones mediante Azure Portal.

Nota:

Si ha usado Copia de seguridad de una base de datos SQL en Azure mediante la CLI para realizar una copia de seguridad de la base de datos SQL, está utilizando los siguientes recursos:

  • Un grupo de recursos denominado SQLResourceGroup
  • Una bóveda llamada SQLVault
  • Contenedor protegido denominado VMAppContainer; Calcular; SQLResourceGroup; testSQLVM
  • Base de datos/elemento de copia de seguridad denominada sqldatabase; mssqlserver; maestro
  • Recursos en 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 ha realizado una copia de seguridad mediante Azure Backup. En las secciones siguientes se describe cada una de las operaciones de administración.

Obtenga más información sobre las configuraciones y los escenarios admitidos para la copia de seguridad de SQL.

Supervisar los trabajos de copia de seguridad y restauración

Use el comando az backup job list para supervisar los trabajos completados o en ejecución (copia de seguridad o restauración). 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 política desea cambiar. Aquí, reemplace la política de la base de datos SQL sqldatabase; mssqlserver; master con una nueva política 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

Creación de una política de copia de seguridad diferencial

Para crear una directiva de copia de seguridad diferencial, use el comando az backup policy create con los siguientes parámetros:

  • --backup-management-type: Carga de trabajo de Azure.
  • --workload-type: Base de datos SQL.
  • --name: Nombre de la política.
  • --policy: Archivo JSON con detalles apropiados para la programación y la retención.
  • --resource-group: Grupo de recursos de la bóveda.
  • --vault-name: Nombre de la bóveda/

Ejemplo:

az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase

Ejemplo de 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 política se ha creado correctamente, la salida del comando muestra el JSON de la política que pasó como parámetro al ejecutar el comando.

Puede modificar la siguiente sección de la política para especificar la frecuencia de copia de seguridad necesaria y la retención para 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 tener copias de seguridad diferenciales solo los sábados y conservarlas durante 60 días, realice los siguientes cambios en la política:

  • Actualice el recuento de retentionDuration a 60 días.
  • Especifique solo el sábado como 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

Al registrar una instancia de SQL con un almacén de Recovery Services , se detectan 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 protectable-item list para enumerar todas las bases de datos que se han 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 una copia de seguridad, consulte Habilitar la copia de seguridad en la base de datos 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 hacer una copia de seguridad se muestra en esta lista, que aparece como:

Name                            Protectable Item Type    ParentName    ServerName    IsProtected
---------------------------     ----------------------   ------------  -----------   ------------
sqldatabase;mssqlserver;db1     SQLDataBase              mssqlserver   testSQLVM	 NotProtected  
sqldatabase;mssqlserver;db2     SQLDataBase              mssqlserver   testSQLVM	 NotProtected

Detener la protección de una base de datos SQL

Puede detener la protección de 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 decides dejar los puntos de recuperación, ten en cuenta estos detalles:

  • Todos los puntos de recuperación permanecen intactos para siempre, y todas las paradas de poda en la protección de parada con retención de 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.

A continuación se detallan los procesos para detener la protección.

Detener la protección con conservación de datos

Para detener la protección con retención de 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 comprobar el estado de esta operación, use el comando az backup job show .

Detención de la protección sin conservar los datos

Para detener la protección sin retener 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 \
    --delete-backup-data true \
    --output table

La salida tiene el siguiente aspecto:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

Para comprobar el estado de esta operación, use el comando az backup job show .

Reanudar protección

Cuando detenga la protección de la base de datos SQL con retención de datos, 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 protection 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 comprobar el estado de esta operación, use el comando az backup job show .

Pasos siguientes