Správa databází SQL na virtuálním počítači Azure pomocí Azure CLI

Azure CLI slouží k vytváření a správě prostředků Azure z příkazového řádku nebo prostřednictvím skriptů. Tento článek popisuje, jak spravovat zálohovanou databázi SQL na virtuálním počítači Azure pomocí Azure CLI. Tyto akce můžete provádět také pomocí webu Azure Portal.

Poznámka:

Pokud jste použili zálohování databáze SQL v Azure pomocí rozhraní příkazového řádku, pak používáte následující prostředky:

  • Skupina prostředků s názvem SQLResourceGroup
  • Trezor s názvem SQLVault
  • Chráněný kontejner s názvem VMAppContainer; Vypočítat; SQLResourceGroup; testSQLVM
  • Zálohovaná databáze nebo položka s názvem sqldatabase; mssqlserver; master
  • Prostředky v regionu westus2

Azure CLI usnadňuje proces správy databáze SQL spuštěné na virtuálním počítači Azure zálohovaného pomocí služby Azure Backup. Následující části popisují jednotlivé operace správy.

Pokud chcete zobrazit scénáře zálohování a obnovení, které dnes podporujeme, podívejte se na matici podpory. Nejčastější dotazy najdete v nejčastějších dotazech.

Monitorování úloh zálohování a obnovení

Pomocí příkazu az backup job list můžete monitorovat dokončené nebo aktuálně spuštěné úlohy (zálohování nebo obnovení). Rozhraní příkazového řádku také umožňuje pozastavit aktuálně spuštěnou úlohu nebo počkat na dokončení úlohy.

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

Výstup se zobrazí takto:

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

Změna zásady

Pokud chcete změnit zásadu základní konfigurace zálohování SQL, použijte příkaz az backup policy set . Parametr name v tomto příkazu odkazuje na zálohovanou položku, jejíž zásadu chcete změnit. Zde nahraďte zásadu SQL databáze sqldatabase;mssqlserver;master novou zásadou newSQLPolicy. Nové zásady můžete vytvořit pomocí příkazu 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 

Výstup se zobrazí takto:

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

Vytvoření zásady rozdílového zálohování

Pokud chcete vytvořit zásady rozdílového zálohování, použijte příkaz az backup policy create s následujícími parametry:

  • --backup-management-type: Pracovní zátěž Azure.
  • --workload-type: Databáze SQL.
  • --name: Název zásady.
  • --policy: Soubor JSON s odpovídajícími podrobnostmi pro plán a uchovávání.
  • --resource-group: Skupina prostředků úložiště.
  • --vault-name: Název trezoru/

Příklad:

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

Ukázkový 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"
} 

Po úspěšném vytvoření zásady se ve výstupu příkazu zobrazí json zásad, který jste předali jako parametr při provádění příkazu.

V následující části zásad můžete určit požadovanou frekvenci zálohování a uchovávání rozdílových záloh.

Například:

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

Příklad:

Pokud chcete mít rozdílové zálohy pouze v sobotu a zachovat je po dobu 60 dnů, proveďte v zásadách následující změny:

  • Aktualizujte počet doba uchovávání informací na 60 dnů.
  • Zadejte pouze sobotu jako 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
  }
}

Ochrana nových databází přidaných do instance SQL

Registrace instance SQL v trezoru služby Recovery Services automaticky zjistí všechny databáze v této instanci.

Pokud jste ale do instance SQL přidali nové databáze později, použijte příkaz az backup protectable-item initialize . Tento příkaz zjistí přidané nové databáze.

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

Poté použijte cdlet az backup protectable-item list, abyste vyjmenovali všechny databáze objevené na vaší SQL instanci. Zkontrolujte nebo filtrujte jejich stav ochrany. Když najdete databázi, kterou chcete zálohovat, podívejte se na Povolení zálohování databáze SQL.

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

Nová databáze, kterou chcete zálohovat, se zobrazí v tomto seznamu, která se zobrazí takto:

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

Zastavení ochrany databáze SQL

Ochranu databáze SQL můžete zastavit v následujících procesech:

  • Zastavte všechny budoucí úlohy zálohování a odstraňte všechny body obnovení.
  • Zastavte všechny budoucí úlohy zálohování a ponechte body obnovení nedotčené.

Pokud se rozhodnete ponechat body obnovení, vezměte v úvahu tyto detaily:

  • Všechny body obnovení zůstanou navždy nedotčeny a veškeré prořezávání se zastaví při zastavení ochrany s uchováním dat.
  • Za chráněnou instanci a využité úložiště se vám budou účtovat poplatky.
  • Pokud odstraníte zdroj dat bez zastavení zálohování, nové zálohy selžou.

Procesy zastavení ochrany jsou podrobně popsané níže.

Ukončení ochrany se zachováním dat

Pokud chcete zastavit ochranu se zachováním dat, použijte příkaz 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

Výstup se zobrazí takto:

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

Pokud chcete ověřit stav této operace, použijte příkaz az backup job show .

Zastavení ochrany bez uchovávání dat

Pokud chcete zastavit ochranu bez zachování dat, použijte příkaz 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

Výstup se zobrazí takto:

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

Pokud chcete ověřit stav této operace, použijte příkaz az backup job show .

Obnovení ochrany

Když zastavíte ochranu databáze SQL se zachováním dat, můžete ochranu obnovit později. Pokud zálohovaná data nezachováte, nebudete moct ochranu obnovit.

K obnovení ochrany použijte příkaz az backup protection resume .

az backup protection resume --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name "VMAppContainer;Compute;SQLResourceGroup;testSQLVM" \
    --policy-name SQLPolicy \
    --item-name "<native-database-item-name>" \
    --output table

Výstup se zobrazí takto:

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

Pokud chcete ověřit stav této operace, použijte příkaz az backup job show .

Správa záloh snímků instance SQL

Následující snapshot příkazy používají syntaxi PowerShell shellu, nikoli Bash. Nahraďte zástupné prvky a použijte verzi Azure CLI, která podporuje možnosti snapshotů uvedené v tomto článku. Spusť pouze zamýšlenou operaci. Příklady retain-data a delete-data jsou alternativy.

Vyberte trezor a chráněnou instanci

Použijte předplatné a skupinu prostředků vaultu pro běžné argumenty:

$vaultSubscription = "<vault-subscription-id>"
$vaultRg = "<vault-rg>"
$vaultName = "<vault-name>"
$vaultArgs = @("--subscription", $vaultSubscription, "--resource-group", $vaultRg, "--vault-name", $vaultName)

az backup vault show --subscription $vaultSubscription --resource-group $vaultRg --name $vaultName
az backup container list @vaultArgs --backup-management-type AzureWorkload `
  --query "[].{Name:name,VM:properties.friendlyName}" --output table
$containerName = "<native-source-container-name>"
$sourceArgs = $vaultArgs + @("--container-name", $containerName, "--backup-management-type", "AzureWorkload")

Zkopírujte přesný název kontejneru z výstupu. Vyjmenujte všechny instance chráněné snapshoty v trezoru a poté omezte seznam na vybraný kontejner:

az backup item list @vaultArgs --backup-management-type AzureWorkload `
  --workload-type SQLInstance --output json
az backup item list @sourceArgs --workload-type SQLInstance --output json
$instanceItemName = "<native-protected-instance-item-name>"
az backup item show @sourceArgs --workload-type SQLInstance `
  --name $instanceItemName --output json
$instanceArgs = $sourceArgs + @("--item-name", $instanceItemName, "--workload-type", "SQLInstance")

Používejte nativní názvy vrácené službou místo vytváření názvů kontejnerů nebo položek. Pro tvorbu zásad a výběr databáze viz Konfigurace zálohování snímků instance SQL.

Operace snímků monitoru

Použijte název úlohy, který vrací operace zálohování, obnovení nebo ochrany, ke kontrole jejího stavu.

az backup job show @vaultArgs --name "<job-name>" --output json

Zastavit ochranu a uchovávání dat

Potvrďte, že vybraná položka je zamýšlená instance, než zastavíte její zálohy:

az backup protection disable @instanceArgs --delete-backup-data false

Tato operace zastaví zálohování při zachování existujících zálohovacích dat. Před pokračováním si přečtěte potvrzovací výzvu.

Zastavení ochrany a odstranění dat

Warning

Následující je destruktivní alternativou k uchovávání zálohovacích dat. Před žádostí o smazání ověřte vybranou instanci a její databáze. Neměnnost trezoru a nastavení soft-delete mohou ovlivnit chování při mazání.

az backup protection disable @instanceArgs --delete-backup-data true

Odregistrujte VM kontejner

Kontejner odregistrujte až poté, co všechny jeho chráněné položky již nejsou chráněny a nezůstanou žádná záložní data. Tato operace se vztahuje na celý kontejner aplikace VM, nejen na jednu instanci nebo databázi.

az backup container unregister @vaultArgs --container-name $containerName `
  --backup-management-type AzureWorkload

Pro dotazy na snapshot recovery-point a obnovovací konfigurace viz Obnovení snapshotů instance SQL.

Další kroky