Dela via


Återställa SQL-databaser på en virtuell Azure-dator med Hjälp av Azure CLI

Azure CLI används för att skapa och hantera Azure-resurser från kommandoraden eller via skript. Den här artikeln beskriver hur du återställer en säkerhetskopierad SQL-databas på en virtuell Azure-dator med Hjälp av Azure CLI. Du kan också utföra dessa åtgärder med hjälp av Azure-portalen.

Använd Azure Cloud Shell för att köra CLI-kommandon.

Den här artikeln förutsätter att du har en SQL-databas som körs på en virtuell Azure-dator som säkerhetskopieras med Hjälp av Azure Backup. Om du har använt Säkerhetskopiera en SQL-databas i Azure med CLI för att säkerhetskopiera din SQL-databas använder du följande resurser:

  • En resursgrupp med namnet SQLResourceGroup.
  • Ett valv med namnet SQLVault.
  • Skyddad container med namnet VMAppContainer;Compute;SQLResourceGroup;testSQLVM.
  • Säkerhetskopierad databas/objekt med namnet sqldatabase;mssqlserver;master.
  • Resurser i westus regionen.

Kommentar

Mer information om konfigurationer och scenarier som stöds finns i stödmatrisen för SQL-säkerhetskopiering.

Visa återställningspunkter för en säkerhetskopierad databas

Om du vill visa listan över alla återställningspunkter för en databas använder du kommandot az backup recoverypoint list som:

az backup recoverypoint list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
   --output table

Listan över återställningspunkter visas som:

Name                      Time                               BackupManagementType   Item Name               		RecoveryPointType
-------------------       ---------------------------------  ---------------------  ----------------------  		------------------
7660777527047692711       2019-12-10T04:00:32.346000+00:00   AzureWorkload          sqldatabase;mssqlserver;master  Full
7896624824685666836       2019-12-15T10:33:32.346000+00:00   AzureWorkload          sqldatabase;mssqlserver;master  Differential
DefaultRangeRecoveryPoint                                    AzureWorkload          sqldatabase;mssqlserver;master  Log

Listan ovan innehåller tre återställningspunkter: var och en för fullständig, differentiell och loggsäkerhetskopiering.

Kommentar

Du kan också visa start- och slutpunkterna för varje obruten loggsäkerhetskopieringskedja med kommandot az backup recoverypoint show-log-chain .

Förutsättningar för att återställa en databas

Kontrollera att följande krav uppfylls innan du återställer en databas:

  • Du kan bara återställa databasen till en SQL-instans i samma region.
  • Målinstansen måste registreras med samma valv som källan.

Återställ en databas

Azure Backup kan återställa SQL-databaser som körs på virtuella Azure-datorer som:

  • Återställ till ett visst datum eller en viss tid (till den andra) med hjälp av loggsäkerhetskopior. Azure Backup avgör automatiskt lämpliga fullständiga differentiella säkerhetskopior och kedjan med loggsäkerhetskopior som krävs för återställning baserat på den valda tiden.
  • Återställ till en specifik fullständig eller differentiell säkerhetskopia för att återställa till en specifik återställningspunkt.

Om du vill återställa en databas använder du kommandot az restore restore-azurewl , som kräver ett återställningskonfigurationsobjekt som en av indata. Du kan generera det här objektet med kommandot az backup recoveryconfig show . Återställningskonfigurationsobjektet innehåller all information för att utföra en återställning. En av dem är återställningsläget – OriginalWorkloadRestore eller AlternateWorkloadRestore.

Kommentar

OriginalWorkloadRestore: Återställer data till samma SQL-instans som den ursprungliga källan. Det här alternativet skriver över den ursprungliga databasen. AlternateWorkloadRestore: Återställer databasen till en alternativ plats och behåller den ursprungliga källdatabasen.

Återställa till en annan plats

Om du vill återställa en databas till en annan plats använder du AlternateWorkloadRestore som återställningsläge. Du måste sedan välja återställningspunkten, som kan vara en tidigare tidpunkt eller eventuella tidigare återställningspunkter.

Vi fortsätter med att återställa till en tidigare återställningspunkt. Visa listan över återställningspunkter för databasen och välj den punkt som du vill återställa. Här ska vi använda återställningspunkten med namnet 7660777527047692711.

Med namnet på återställningspunkten ovan och återställningsläget skapar du återställningskonfigurationsobjektet med kommandot az backup recoveryconfig show . Kontrollera de återstående parametrarna i det här kommandot:

  • --target-item-name: Namnet som ska användas av den återställde databasen. I det här scenariot använde vi namnet restored_database.
  • --target-server-name: Namnet på en SQL-server som har registrerats till ett Recovery Services-valv och förblir samma region som för den databas som ska återställas. Här återställer du databasen till samma SQL-server som du har skyddat med namnet testSQLVM.
  • --target-server-type: För återställning av SQL-databaser måste du använda SQLInstance.

az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name SQLDataBase;mssqlserver;master \
    --restore-mode AlternateWorkloadRestore \
    --rp-name 7660777527047692711 \
    --target-item-name restored_database \
    --target-server-name testSQLVM \
    --target-server-type SQLInstance \
    --workload-type SQLDataBase \
    --output json

Svaret på ovanstående fråga är ett återställningskonfigurationsobjekt som visas som:

{
  "container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLResourceGroup;testSQLVM",
  "container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
  "database_name": "MSSQLSERVER/restored_database",
  "filepath": null,
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;master",
  "log_point_in_time": null,
  "recovery_mode": null,
  "recovery_point_id": "7660777527047692711",
  "restore_mode": "AlternateLocation",
  "source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
  "workload_type": "SQLDataBase",
  "alternate_directory_paths": []
}

För att återställa databasen kör du kommandot az restore restore-azurewl . Om du vill använda det här kommandot anger du ovanstående JSON-utdata som sparas i en fil med namnet recoveryconfig.json.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --recovery-config recoveryconfig.json \
    --output table

Utdata visas som:

Name                                  Operation    Status      Item Name                          Backup Management Type    Start Time UTC                    Duration
------------------------------------  -----------  ----------  ---------------------------------  ------------------------  --------------------------------  --------------
be7ea4a4-0752-4763-8570-a306b0a0106f  Restore      InProgress  master [testSQLVM]  				  AzureWorkload             2022-06-21T03:51:06.898981+00:00  0:00:05.652967

Svaret ger dig jobbnamnet. Du kan använda det här jobbnamnet för att spåra jobbstatusen med kommandot az backup job show .

Återställa och skriva över

Om du vill återställa till den ursprungliga platsen använder du OriginalWorkloadRestore som återställningsläge. Du måste sedan välja återställningspunkten, som kan vara en tidigare tidpunkt eller någon av de tidigare återställningspunkterna.

Vi kan till exempel välja den tidigare tidpunkten "28-11-2019-09:53:00" att återställa till. Du kan ange den här återställningspunkten i följande format: dd-mm-åååå, dd-mm-åååå-hh:mm:ss. Om du vill välja en giltig tidpunkt för återställning använder du kommandot az backup recoverypoint show-log-chain , som visar intervallen för obrutna säkerhetskopior av loggkedjan.

az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --restore-mode OriginalWorkloadRestore \
    --log-point-in-time 20-06-2022-09:02:41 \
    --output json

Svaret på ovanstående fråga är ett återställningskonfigurationsobjekt som visas som:

{
  "alternate_directory_paths": null,
  "container_id": null,
  "container_uri": "VMAppContainer;compute;petronasinternaltest;sqlserver-11",
  "database_name": null,
  "filepath": null,
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;msdb",
  "log_point_in_time": "20-06-2022-09:02:41",
  "recovery_mode": null,
  "recovery_point_id": "DefaultRangeRecoveryPoint",
  "restore_mode": "OriginalLocation",
  "source_resource_id": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/petronasinternaltest/providers/Microsoft.Compute/virtualMachines/sqlserver-11",
  "workload_type": "SQLDataBase"
}

För att återställa databasen kör du kommandot az restore restore-azurewl . Om du vill använda det här kommandot anger du ovanstående JSON-utdata som sparas i en fil med namnet recoveryconfig.json.

az backup restore restore-azurewl --resource-group sqlResourceGroup \
    --vault-name sqlVault \
    --recovery-config recoveryconfig.json \
    --output table

Utdata visas som:

Name                                  Operation    Status      Item Name                        Backup Management Type    Start Time UTC                    Duration
------------------------------------  -----------  ----------  -------------------------------  ------------------------  --------------------------------  --------------
1730ec49-166a-4bfd-99d5-93027c2d8480  Restore      InProgress  master [testSQLVM]  				AzureWorkload             2022-06-21T04:04:11.161411+00:00  0:00:03.118076

Svaret ger dig jobbnamnet. Du kan använda det här jobbnamnet för att spåra jobbstatusen med kommandot az backup job show .

Återställa till en sekundär region

Om du vill återställa en databas till den sekundära regionen anger du ett målvalv och en server som finns i den sekundära regionen i återställningskonfigurationen.

az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --restore-mode AlternateWorkloadRestore \
    --from-full-rp-name 293170069256531 \
    --rp-name 293170069256531 \
    --target-server-name targetSQLServer \
    --target-container-name VMAppContainer;compute;SQLResourceGroup;targetSQLServer \
    --target-item-name testdb_restore_1 \
    --target-server-type SQLInstance \
    --workload-type SQLDataBase \
    --target-resource-group SQLResourceGroup \
    --target-vault-name targetVault \
    --backup-management-type AzureWorkload

Svaret är ett återställningskonfigurationsobjekt som visas som:

 {
  "container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/targetVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLResourceGroup;targetSQLServer",
  "container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
  "database_name": "MSSQLSERVER/sqldatabase;mssqlserver;testdb_restore_1",
  "filepath": null,
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;master",
  "log_point_in_time": null,
  "recovery_mode": null,
  "recovery_point_id": "932606668166874635",
  "restore_mode": "AlternateLocation",
  "source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
  "workload_type": "SQLDataBase",
  "alternate_directory_paths": [],
}

Använd den här återställningskonfigurationen i kommandot az restore restore-azurewl . --use-secondary-region Välj flaggan för att återställa databasen till den sekundära regionen.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name testSQLVault \
    --recovery-config recoveryconfig.json \
    --use-secondary-region \
    --output table

Utdata visas som:

Name                                  Operation           Status      Item Name                  Backup Management Type    Start Time UTC                    Duration
------------------------------------  ------------------  ----------  -------------------------  ------------------------  --------------------------------  --------------
0d863259-b0fb-4935-8736-802c6667200b  CrossRegionRestore  InProgress  master [testSQLVM] 		 AzureWorkload             2022-06-21T08:29:24.919138+00:00  0:00:12.372421

Kommentar

RPO för säkerhetskopieringsdata som ska vara tillgängliga i den sekundära regionen är 12 timmar. När du aktiverar CRR är därför RPO för den sekundära regionen 12 timmar + loggfrekvensvaraktighet (som kan anges till minst 15 minuter).

Återställa som filer

Om du vill återställa säkerhetskopierade data som filer i stället för en databas använder du RestoreAsFiles som återställningsläge. Välj sedan återställningspunkten, som kan vara en tidigare tidpunkt eller eventuella tidigare återställningspunkter. När filerna har dumpats till en angiven sökväg kan du ta filerna till valfri SQL-dator där du vill återställa dem som en databas. Eftersom du kan flytta dessa filer till valfri dator kan du nu återställa data mellan prenumerationer och regioner.

Här väljer du den föregående tidpunkten för återställning och platsen där du kan dumpa säkerhetskopierade filer som /home/sql/restoreasfiles på samma SQL-server28-11-2019-09:53:00. Du kan ange den här återställningspunkten i något av följande format: dd-mm-åååå eller dd-mm-åååå-hh:mm:ss. Om du vill välja en giltig tidpunkt för återställning använder du kommandot az backup recoverypoint show-log-chain , som visar intervallen för obrutna säkerhetskopior av loggkedjan.

Med namnet på återställningspunkten ovan och återställningsläget skapar du återställningskonfigurationsobjektet med kommandot az backup recoveryconfig show . Kontrollera var och en av de återstående parametrarna i det här kommandot:

  • --target-container-name: Namnet på en SQL-server som har registrerats till ett Recovery Services-valv och som finns i samma region som för databasen som ska återställas. Nu ska vi återställa databasen som filer till samma SQL-server som du har skyddat med namnet hxehost.
  • --rp-name: För en återställning till tidpunkt är återställningspunktens namn DefaultRangeRecoveryPoint.
az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --restore-mode RestoreAsFiles \
    --rp-name 932606668166874635 \
    --target-container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --filepath /sql/restoreasfiles \
    --output json

Svaret på frågan ovan js ett återställningskonfigurationsobjekt som visas som:

{
  "alternate_directory_paths": null,
  "container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLResourceGroup;testSQLVM",
  "container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
  "database_name": null,
  "filepath": "/sql/restoreasfiles",
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;master",
  "log_point_in_time": null,
  "recovery_mode": "FileRecovery",
  "recovery_point_id": "932606668166874635",
  "restore_mode": "AlternateLocation",
  "source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
  "workload_type": "SQLDataBase"
}

För att återställa databasen när filer kör kommandot az restore restore-azurewl . Om du vill använda det här kommandot anger du JSON-utdata ovan som sparas i en fil med namnet recoveryconfig.json.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --restore-config recoveryconfig.json \
    --output json

Utdata visas som:

{
  "eTag": null,
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupJobs/e9cd9e73-e3a3-425a-86a9-8dd1c500ff56",
  "location": null,
  "name": "e9cd9e73-e3a3-425a-86a9-8dd1c500ff56",
  "properties": {
    "actionsInfo": [
      "1"
    ],
    "activityId": "9e7c8ee4-f1ef-11ec-8a2c-3c52826c1a9a",
    "backupManagementType": "AzureWorkload",
    "duration": "0:00:04.304322",
    "endTime": null,
    "entityFriendlyName": "master [testSQLVM]",
    "errorDetails": > [!NOTE]
> Information the user should notice even if skimmingnull,
    "extendedInfo": {
      "dynamicErrorMessage": null,
      "propertyBag": {
        "Job Type": "Restore as files"
      },
      "tasksList": [
        {
          "status": "InProgress",
          "taskId": "Transfer data from vault"
        }
      ]
    },
    "isUserTriggered": true,
    "jobType": "AzureWorkloadJob",
    "operation": "Restore",
    "startTime": "2022-06-22T05:53:32.951666+00:00",
    "status": "InProgress",
    "workloadType": "SQLDataBase"
  },
  "resourceGroup": "SQLResourceGroup",
  "tags": null,
  "type": "Microsoft.RecoveryServices/vaults/backupJobs"
}

Svaret ger dig jobbnamnet. Du kan använda det här jobbnamnet för att spåra jobbstatusen med kommandot az backup job show .

Kommentar

Om du inte vill återställa hela kedjan utan bara en delmängd filer följer du stegen som beskrivs här.

Återställning mellan prenumerationer

Med återställning mellan prenumerationer (CSR) har du flexibiliteten att återställa till valfri prenumeration och valv under klientorganisationen om återställningsbehörigheter är tillgängliga. Som standard är CSR aktiverat på alla Recovery Services-valv (befintliga och nyligen skapade valv).

Kommentar

  • Du kan utlösa återställning mellan prenumerationer från Recovery Services-valvet.
  • CSR stöds endast för direktuppspelningsbaserad säkerhetskopiering och stöds inte för ögonblicksbildsbaserad säkerhetskopiering.
  • Cross Regional Restore (CRR) med CSR stöds inte.
az backup vault create

Lägg till parametern cross-subscription-restore-state som gör att du kan ange CSR-tillståndet för valvet när valvet skapas och uppdateras.

az backup recoveryconfig show

Lägg till parametern --target-subscription-id som gör att du kan ange målprenumerationen som indata när du utlöser återställning mellan prenumerationer för SQL- eller HANA-datakällor.

Exempel:

   az backup vault create -g {rg_name} -n {vault_name} -l {location} --cross-subscription-restore-state Disable
   az backup recoveryconfig show --restore-mode alternateworkloadrestore --backup-management-type azureworkload -r {rp} --target-container-name {target_container} --target-item-name {target_item} --target-resource-group {target_rg} --target-server-name {target_server} --target-server-type SQLInstance --target-subscription-id {target_subscription} --target-vault-name {target_vault} --workload-type SQLDataBase --ids {source_item_id}

Gå vidare