Condividi tramite


Gestire i database SQL in una macchina virtuale di Azure usando l'interfaccia della riga di comando di Azure

L'interfaccia della riga di comando di Azure consente di creare e gestire le risorse di Azure dalla riga di comando o tramite script. Questo articolo descrive come gestire un database SQL di backup nella macchina virtuale di Azure usando l'interfaccia della riga di comando di Azure. È anche possibile eseguire queste azioni usando il portale di Azure.

In questo articolo si apprenderà come:

  • Monitorare i processi di backup e ripristino
  • Proteggere i nuovi database aggiunti a un'istanza di SQL
  • Modificare i criteri
  • Arresta protezione
  • Riprendere la protezione

Se è stato usato il backup di un database SQL in Azure usando l'interfaccia della riga di comando per eseguire il backup del database SQL, si usano le risorse seguenti:

  • Un gruppo di risorse denominato SQLResourceGroup
  • Insieme di credenziali denominato SQLVault
  • Contenitore protetto denominato VMAppContainer; Calcolare; SQLResourceGroup;testSQLVM
  • Database di backup/elemento denominato sqldatabase;mssqlserver;master
  • Risorse nell'area westus2

L'interfaccia della riga di comando di Azure semplifica il processo di gestione di un database SQL in esecuzione in una macchina virtuale di Azure sottoposta a backup usando Backup di Azure. Le sezioni seguenti descrivono ognuna delle operazioni di gestione.

Nota

Per altre informazioni sulle configurazioni e sugli scenari supportati, vedere la matrice di supporto del backup SQL .

Monitorare i processi di backup e ripristino

Usare il comando az backup job list per monitorare i processi completati o attualmente in esecuzione (backup o ripristino). L'interfaccia della riga di comando consente inoltre di sospendere un processo attualmente in esecuzione o attendere il completamento di un processo.

az backup job list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --output table

L'output viene visualizzato come:

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

Modificare un criterio

Per modificare i criteri sottostanti alla configurazione del backup SQL, usare il comando az backup policy set . Il parametro name in questo comando fa riferimento all'elemento di backup il cui criterio si vuole modificare. In questo caso sostituire i criteri del database SQL sqldatabase;mssqlserver;master con un nuovo criterio newSQLPolicy. È possibile creare nuovi criteri usando il 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 \

L'output viene visualizzato come:

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

Creare criteri di backup differenziali

Per creare criteri di backup differenziali, usare il comando az backup policy create con i parametri seguenti:

  • --backup-management-type: carico di lavoro di Azure.
  • --workload-type: SQL DataBase.
  • --name: nome del criterio.
  • --policy: file JSON con dettagli appropriati per la pianificazione e la conservazione.
  • --resource-group: gruppo di risorse dell'insieme di credenziali.
  • --vault-name: nome dell'insieme di credenziali/

Esempio:

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

JSON di esempio (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"
} 

Dopo aver creato correttamente il criterio, l'output del comando mostra il codice JSON dei criteri passato come parametro durante l'esecuzione del comando.

È possibile modificare la sezione seguente del criterio per specificare la frequenza di backup e la conservazione necessarie per i backup differenziali.

Ad esempio:

{
  "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
  }
}

Esempio:

Se si desidera avere backup differenziali solo il sabato e conservarli per 60 giorni, eseguire le modifiche seguenti nei criteri:

  • Aggiornare il numero di conservazioneDuration a 60 giorni.
  • Specificare solo sabato come 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
  }
}

Proteggere i nuovi database aggiunti a un'istanza di SQL

La registrazione di un'istanza SQL con un insieme di credenziali di Servizi di ripristino individua automaticamente tutti i database in questa istanza.

Tuttavia, se sono stati aggiunti nuovi database all'istanza sql in un secondo momento, usare il comando az backup protectable-item initialize . Questo comando individua i nuovi database aggiunti.

az backup protectable-item initialize --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --workload-type SQLDataBase

Usare quindi il cmdlet az backup protectable-item list per elencare tutti i database individuati nell'istanza SQL. Questo elenco esclude tuttavia i database in cui è già stato configurato il backup. Dopo aver individuato il backup del database, vedere Abilitare il backup nel database SQL.

az backup protectable-item list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --workload-type SQLDataBase \
	--protectable-item-type SQLDataBase \
    --output table

Il nuovo database di cui si vuole eseguire il backup viene visualizzato in questo elenco, che viene visualizzato come:

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

Arrestare la protezione per un database SQL

È possibile interrompere la protezione di un database SQL nei processi seguenti:

  • Interrompere tutti i processi di backup futuri ed eliminare tutti i punti di recupero.
  • Arrestare tutti i processi di backup futuri mantenendo tuttavia invariati i punti di ripristino.

Se si sceglie di lasciare i punti di ripristino, tenere presente questi dettagli:

  • Tutti i punti di ripristino rimangono intatti per sempre e tutti gli arresti di eliminazione della protezione con conservare i dati.
  • Verranno addebitati i costi per l'istanza protetta e lo spazio di archiviazione utilizzato.
  • Se si elimina un'origine dati senza arrestare i backup, i nuovi backup avranno esito negativo.

I processi per arrestare la protezione sono descritti di seguito.

Arrestare la protezione conservando i dati

Per arrestare la protezione con conservare i dati, usare il 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

L'output viene visualizzato come:

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

Per verificare lo stato di questa operazione, usare il comando az backup job show .

Arrestare la protezione senza conservazione dei dati

Per arrestare la protezione senza conservare i dati, usare il 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

L'output viene visualizzato come:

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

Per verificare lo stato di questa operazione, usare il comando az backup job show .

Riprendere la protezione

Quando si arresta la protezione per il database SQL con i dati di conservazione, è possibile riprendere la protezione in un secondo momento. Se non si conservano i dati di backup, non sarà possibile riprendere la protezione.

Per riprendere la protezione, usare il 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

L'output viene visualizzato come:

Name                                  ResourceGroup
------------------------------------  ---------------  
b2a7f108-1020-4529-870f-6c4c43e2bb9e  SQLResourceGroup

Per verificare lo stato di questa operazione, usare il comando az backup job show .

Passaggi successivi