Delen via


Een back-up maken van SQL-databases en deze herstellen in Azure-VM's met PowerShell

In dit artikel wordt beschreven hoe u Azure PowerShell gebruikt om een back-up te maken van een SQL DB binnen een Azure-VM en deze te herstellen met behulp van een Azure Backup Recovery Services-kluis .

In dit artikel komt het volgende aan bod:

  • PowerShell instellen en de Azure Recovery Services-provider registreren.
  • Maak een Recovery Services-kluis.
  • Configureer back-up voor SQL DB binnen een Azure-VM.
  • Voer een back-uptaak uit.
  • Herstel een back-up van een SQL-database.
  • Back-up- en hersteltaken bewaken.

Voordat u begint

Recovery Services-objecthiërarchie

De objecthiërarchie wordt samengevat in het volgende diagram.

Recovery Services-objecthiërarchie

Raadpleeg de naslaginformatie voor de Az.RecoveryServices-cmdlet in de Azure-bibliotheek.

Instellen en installeren

Stel PowerShell als volgt in:

  1. Download de nieuwste versie van Az PowerShell. De minimale versie is 1.5.0.

  2. Zoek de Azure Backup PowerShell-cmdlets met deze opdracht:

    Get-Command *azrecoveryservices*
    
  3. Controleer de aliassen en cmdlets voor Azure Backup en de Recovery Services-kluis. Hier volgt een voorbeeld van wat u kunt zien. Het is geen volledige lijst met cmdlets.

    Lijst met Recovery Services-cmdlets

  4. Meld u aan bij uw Azure-account met Connect-AzAccount.

  5. Op de webpagina die wordt weergegeven, wordt u gevraagd uw accountreferenties in te voeren.

    • U kunt uw accountreferenties ook opnemen als een parameter in de cmdlet Connect-AzAccount met -Credential.
    • Als u een CSP-partner bent die werkt voor een tenant, geeft u de klant op als tenant, met behulp van de tenant-id of primaire domeinnaam van de tenant. Een voorbeeld is Connect-AzAccount -Tenant fabrikam.com.
  6. Koppel het abonnement dat u wilt gebruiken aan het account, omdat een account meerdere abonnementen kan hebben.

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  7. Als u Azure Backup voor het eerst gebruikt, gebruikt u de cmdlet Register-AzResourceProvider om de Azure Recovery Services-provider bij uw abonnement te registreren.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  8. Controleer of de providers zijn geregistreerd:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  9. Controleer in de uitvoer van de opdracht of RegistrationState wordt gewijzigd in Registered. Als dit niet het probleem is, voert u de cmdlet Register-AzResourceProvider opnieuw uit.

Een Recovery Services-kluis maken

Volg deze stappen om een Recovery Services-kluis te maken.

De Recovery Services-kluis is een Resource Manager-resource, dus u moet deze in een resourcegroep plaatsen. U kunt een bestaande resourcegroep gebruiken of u kunt een resourcegroep maken met de cmdlet New-AzResourceGroup . Wanneer u een resourcegroep maakt, geeft u de naam en locatie voor de resourcegroep op.

  1. Een kluis wordt in een resourcegroep geplaatst. Als u geen bestaande resourcegroep hebt, maakt u een nieuwe met de New-AzResourceGroup. In dit voorbeeld maken we een nieuwe resourcegroep in de regio VS - west.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Gebruik de cmdlet New-AzRecoveryServicesVault om de kluis te maken. Geef dezelfde locatie op voor de kluis als die voor de resourcegroep is gebruikt.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Geef het type redundantie op dat moet worden gebruikt voor de kluisopslag.

    $vault1 = Get-AzRecoveryServicesVault -Name "testvault"
    Set-AzRecoveryServicesBackupProperties  -Vault $vault1 -BackupStorageRedundancy GeoRedundant
    

De kluizen in een abonnement weergeven

Als u alle kluizen in het abonnement wilt weergeven, gebruikt u Get-AzRecoveryServicesVault.

Get-AzRecoveryServicesVault

De uitvoer is vergelijkbaar met het volgende. De bijbehorende resourcegroep en locatie worden opgegeven.

Name              : Contoso-vault
ID                : /subscriptions/1234
Type              : Microsoft.RecoveryServices/vaults
Location          : WestUS
ResourceGroupName : Contoso-docs-rg
SubscriptionId    : 1234-567f-8910-abc
Properties        : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties

De kluiscontext instellen

Sla het kluisobject op in een variabele en stel de kluiscontext in.

  • Veel Azure Backup-cmdlets vereisen het Recovery Services-kluisobject als invoer, dus het is handig om het kluisobject op te slaan in een variabele.
  • De context van de kluis is het type gegevens dat in de kluis wordt beveiligd. Stel deze in met Set-AzRecoveryServicesVaultContext. Nadat de context is ingesteld, is deze van toepassing op alle volgende cmdlets.

In het volgende voorbeeld wordt de kluiscontext ingesteld voor testvault

Get-AzRecoveryServicesVault -Name "testvault" | Set-AzRecoveryServicesVaultContext

De kluis-id ophalen

We zijn van plan om de kluiscontextinstelling af te schalen in overeenstemming met de Azure PowerShell-richtlijnen. In plaats daarvan kunt u de kluis-id opslaan of ophalen en deze als volgt doorgeven aan relevante opdrachten:

$testVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$testVault.ID

Een back-upbeleid configureren

Met een back-upbeleid wordt de planning voor back-ups opgegeven en hoe lang herstelpunten voor back-ups moeten worden bewaard:

Standaard wordt een begintijd gedefinieerd in het planningsbeleidsobject. Gebruik het volgende voorbeeld om de begintijd te wijzigen in de gewenste begintijd. De gewenste begintijd moet ook in UTC staan. In het volgende voorbeeld wordt ervan uitgegaan dat de gewenste begintijd 01:00 UUR UTC is voor dagelijkse back-ups.

$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "MSSQL"
$UtcTime = (Get-Date -Date "2019-03-20 01:30:00Z").ToUniversalTime()
$schPol.FullBackupSchedulePolicy.ScheduleRunTimes[0] = $UtcTime

Belangrijk

U moet de begintijd in slechts 30 minuten veelvouden opgeven. In het bovenstaande voorbeeld kan dit alleen '01:00:00' of '02:30:00' zijn. De begintijd kan niet '01:15:00' zijn.

In het volgende voorbeeld worden het planningsbeleid en het bewaarbeleid opgeslagen in variabelen. Vervolgens worden deze variabelen gebruikt als parameters voor een nieuw beleid (NewSQLPolicy). NewSQLPolicy maakt dagelijks een volledige back-up, bewaart deze gedurende 180 dagen en maakt elke 2 uur een logboekback-up

$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "MSSQL"
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "MSSQL"
$NewSQLPolicy = New-AzRecoveryServicesBackupProtectionPolicy -Name "NewSQLPolicy" -WorkloadType "MSSQL" -RetentionPolicy $retPol -SchedulePolicy $schPol

De uitvoer is vergelijkbaar met het volgende.

Name                 WorkloadType       BackupManagementType BackupTime                Frequency                                IsDifferentialBackup IsLogBackupEnabled
                                                                                                                                Enabled
----                 ------------       -------------------- ----------                ---------                                -------------------- ------------------
NewSQLPolicy         MSSQL              AzureWorkload        3/15/2019 01:30:00 AM      Daily                                    False                True

Back-up inschakelen

De SQL-VM registreren

Voor Back-ups van Azure-VM's en Azure-bestandsshares kan de Backup-service verbinding maken met deze Azure Resource Manager-resources en de relevante details ophalen. Omdat SQL een toepassing is binnen een Azure-VM, heeft de Backup-service toestemming nodig om toegang te krijgen tot de toepassing en de benodigde gegevens op te halen. Hiervoor moet u de Azure-VM registreren die de SQL-toepassing bevat met een Recovery Services-kluis. Zodra u een SQL-VM bij een kluis hebt geregistreerd, kunt u de SQL DB's alleen in die kluis beveiligen. Gebruik de PowerShell-cmdlet Register-AzRecoveryServicesBackupContainer om de VM te registreren.

 $myVM = Get-AzVM -ResourceGroupName <VMRG Name> -Name <VMName>
Register-AzRecoveryServicesBackupContainer -ResourceId $myVM.ID -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID -Force

De opdracht retourneert een 'back-upcontainer' van deze resource en de status wordt 'geregistreerd'

Notitie

Als de geforceerde parameter niet is opgegeven, wordt u gevraagd om te bevestigen met de tekst 'Wilt u de beveiliging voor deze container uitschakelen'. Negeer deze tekst en zeg 'Y' om te bevestigen. Dit is een bekend probleem en we werken aan het verwijderen van de tekst en de vereiste voor de forceparameter.

SQL DB's ophalen

Zodra de registratie is voltooid, kan de Backup-service alle beschikbare SQL-onderdelen binnen de VIRTUELE machine weergeven. Gebruik de PowerShell-cmdlet Get-AzRecoveryServicesBackupProtectableItem om een back-up van alle SQL-onderdelen weer te geven waarvan een back-up moet worden gemaakt in deze kluis

Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -VaultId $testVault.ID

In de uitvoer worden alle niet-beveiligde SQL-onderdelen weergegeven voor alle SQL-VM's die zijn geregistreerd bij deze kluis met itemtype en servernaam. U kunt verder filteren op een bepaalde SQL-VM door de parameter '-Container' door te geven of de combinatie van 'Name' en 'ServerName' te gebruiken, samen met de vlag ItemType om een uniek SQL-item te bereiken.

$SQLDB = Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLDataBase -VaultId $testVault.ID -Name "<Item Name>" -ServerName "<Server Name>"

Back-up configureren

Nu we beschikken over de vereiste SQL-database en het beleid waarvan een back-up moet worden gemaakt, kunnen we de cmdlet Enable-AzRecoveryServicesBackupProtection gebruiken om back-ups voor deze SQL-database te configureren.

Enable-AzRecoveryServicesBackupProtection -ProtectableItem $SQLDB -Policy $NewSQLPolicy

De opdracht wacht totdat de back-upconfiguratie is voltooid en retourneert de volgende uitvoer.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
master           ConfigureBackup      Completed            3/18/2019 6:00:21 PM      3/18/2019 6:01:35 PM      654e8aa2-4096-402b-b5a9-e5e71a496c4e

Nieuwe SQL DB's ophalen

Zodra de machine is geregistreerd, haalt de Backup-service de details op van de beschikbare DB's. Als SQL DB's of SQL-exemplaren later worden toegevoegd aan de geregistreerde computer, moet u de back-upservice handmatig activeren om een nieuw 'onderzoek' uit te voeren om alle onbeveiligde DB's (inclusief de nieuw toegevoegde DATABASES) opnieuw op te halen. Gebruik de PowerShell-cmdlet Initialize-AzRecoveryServicesBackupItem op de SQL-VM om een nieuw onderzoek uit te voeren. De opdracht wacht totdat de bewerking is voltooid. Gebruik later de PowerShell-cmdlet Get-AzRecoveryServicesBackupProtectableItem om de lijst met de meest recente niet-beveiligde SQL-onderdelen op te halen.

$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
Initialize-AzRecoveryServicesBackupProtectableItem -Container $SQLContainer -WorkloadType MSSQL -VaultId $testVault.ID
Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLDataBase -VaultId $testVault.ID

Zodra de relevante beveiligbare items zijn opgehaald, schakelt u de back-ups in zoals beschreven in de bovenstaande sectie. Als u geen nieuwe DB's handmatig wilt detecteren, kunnen ze ervoor kiezen om automatisch te beveiligen, zoals hieronder wordt uitgelegd.

Automatische beveiliging inschakelen

U kunt back-ups zo configureren dat alle DB's die in de toekomst worden toegevoegd, automatisch worden beveiligd met een bepaald beleid. Als u automatische beveiliging wilt inschakelen, gebruikt u de PowerShell-cmdlet Enable-AzRecoveryServicesBackupAutoProtection .

Omdat de instructie is om een back-up te maken van alle toekomstige DB's, wordt de bewerking uitgevoerd op SQLInstance-niveau.

$SQLInstance = Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLInstance -VaultId $testVault.ID -Name "<Protectable Item name>" -ServerName "<Server Name>"
Enable-AzRecoveryServicesBackupAutoProtection -InputItem $SQLInstance -BackupManagementType AzureWorkload -WorkloadType MSSQL -Policy $NewSQLPolicy -VaultId $testVault.ID

Zodra de intentie voor automatische beveiliging is gegeven, vindt het onderzoek naar de machine om zojuist toegevoegde DB's op te halen elke 8 uur plaats als een geplande achtergrondtaak.

SQL DB's herstellen

Azure Backup kan als volgt SQL Server-databases herstellen die worden uitgevoerd op Virtuele Azure-machines:

  • Herstel naar een specifieke datum of tijd (naar de tweede) met behulp van back-ups van transactielogboeken. Azure Backup bepaalt automatisch de juiste volledige differentiële back-up en de keten van logboekback-ups die moeten worden hersteld op basis van de geselecteerde tijd.
  • Herstel een specifieke volledige of differentiële back-up om te herstellen naar een specifiek herstelpunt.

Controleer de vereisten die hier worden vermeld voordat u SQL DB's herstelt.

Waarschuwing

Vanwege een beveiligingsprobleem met betrekking tot RBAC moesten we een belangrijke wijziging introduceren in de herstelopdrachten voor SQL DB via PowerShell. Voer een upgrade uit naar az 6.0.0-versie of hoger om de juiste herstelopdrachten te kunnen indienen via PowerShell. Hieronder ziet u de nieuwste PS-opdrachten.

Haal eerst de relevante back-up van SQL DB op met behulp van de PowerShell-cmdlet Get-AzRecoveryServicesBackupItem .

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID

De relevante hersteltijd ophalen

Zoals hierboven is beschreven, kunt u de back-up van SQL DB herstellen naar een volledige/differentiële kopie OF naar een logboekpunt.

Afzonderlijke herstelpunten ophalen

Gebruik Get-AzRecoveryServicesBackupRecoveryPoint om afzonderlijke (volledige/differentiële) herstelpunten op te halen voor een back-up van SQL DB.

$startDate = (Get-Date).AddDays(-7).ToUniversalTime()
$endDate = (Get-Date).ToUniversalTime()
Get-AzRecoveryServicesBackupRecoveryPoint -Item $bkpItem -VaultId $testVault.ID -StartDate $startdate -EndDate $endDate

De uitvoer is vergelijkbaar met het volgende voorbeeld

RecoveryPointId    RecoveryPointType  RecoveryPointTime      ItemName                             BackupManagemen
                                                                                                  tType
---------------    -----------------  -----------------      --------                             ---------------
6660368097802      Full               3/18/2019 8:09:35 PM   MSSQLSERVER;model             AzureWorkload

Gebruik het filter RecoveryPointId of een matrixfilter om het relevante herstelpunt op te halen.

$FullRP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $bkpItem -VaultId $testVault.ID -RecoveryPointId "6660368097802"

Herstelpunt voor een bepaald tijdstip ophalen

Als u de database wilt herstellen naar een bepaald tijdstip, gebruikt u de PowerShell-cmdlet Get-AzRecoveryServicesBackupRecoveryLogChain . De cmdlet retourneert een lijst met datums die de begin- en eindtijden van een niet-verbroken, continue logboekketen voor dat SQL-back-upitem vertegenwoordigen. Het gewenste tijdstip moet binnen dit bereik vallen.

Get-AzRecoveryServicesBackupRecoveryLogChain -Item $bkpItem -VaultId $testVault.ID

De uitvoer is vergelijkbaar met het volgende voorbeeld.

ItemName                       StartTime                      EndTime
--------                       ---------                      -------
SQLDataBase;MSSQLSERVER;azu... 3/18/2019 8:09:35 PM           3/19/2019 12:08:32 PM

De bovenstaande uitvoer betekent dat u kunt herstellen naar een bepaald tijdstip tussen de weergegeven begin- en eindtijd. De tijden zijn in UTC. Maak een bepaald tijdstip in PowerShell dat zich binnen het bovenstaande bereik bevindt.

Notitie

Wanneer een logboekpunt is geselecteerd voor herstel, hoeft u niet het beginpunt op te geven, dat wil gezegd, de volledige back-up van waaruit de database wordt hersteld. De Azure Backup-service zorgt voor het volledige herstelplan, dat wil gezegd, welke volledige back-up moet worden gekozen, welke logboekback-ups moeten worden toegepast, enzovoort.

Herstelconfiguratie bepalen

Voor een SQL DB-herstel worden de volgende herstelscenario's ondersteund.

  • De back-up van sql-database overschrijven met gegevens van een ander herstelpunt - OriginalWorkloadRestore
  • De SQL-database herstellen als een nieuwe database in hetzelfde SQL-exemplaar - AlternateWorkloadRestore
  • De SQL-database herstellen als een nieuwe database in een ander SQL-exemplaar in een andere SQL-VM - AlternateWorkloadRestore
  • De SQL-database herstellen als .bak bestanden - RestoreAsFiles

Nadat u het relevante herstelpunt (uniek of logpunt-in-time) hebt opgehaald, gebruikt u Get-AzRecoveryServicesBackupWorkloadRecoveryConfig PowerShell-cmdlet om het herstelconfiguratieobject op te halen volgens het gewenste herstelplan.

Oorspronkelijke herstelbewerking van werkbelasting

Als u de back-updatabase wilt overschrijven met gegevens van het herstelpunt, geeft u gewoon de juiste vlag en het relevante herstelpunt op, zoals wordt weergegeven in het volgende voorbeeld(en).

Oorspronkelijke herstelbewerking met afzonderlijk herstelpunt
$OverwriteWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -OriginalWorkloadRestore -VaultId $testVault.ID
Oorspronkelijke herstelbewerking met logboekpunt in tijd
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem  -OriginalWorkloadRestore -VaultId $testVault.ID

Alternatief herstel van werkbelasting

Belangrijk

Een back-up van SQL DB kan alleen worden hersteld als een nieuwe database naar een andere SQLInstance, in een Azure-VM die is geregistreerd bij deze kluis.

Als de doel-SQLInstance zich in een andere Azure-VM bevindt, controleert u of deze is geregistreerd bij deze kluis en wordt de relevante SQLInstance weergegeven als een beveiligbaar item. In dit document gaan we ervan uit dat de naam van de doel-SQLInstance MSSQLSERVER is binnen een andere VM 'Contoso2'.

$TargetContainer =  Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -Status Registered  -VaultId $testVault.ID -FriendlyName "Contoso2"
$TargetInstance = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -ItemType SQLInstance -Name "MSSQLSERVER" -ServerName "Contoso2" -VaultId $testVault.ID

Geef vervolgens het relevante herstelpunt door, doel-SQL-exemplaar met de rechtervlag, zoals hieronder wordt weergegeven en de doelcontainer waaronder het DOEL-SQL-exemplaar bestaat.

Alternatieve herstelbewerking met een afzonderlijk herstelpunt
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Alternatief herstellen met logboekpunt in tijd
$AnotherInstanceWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Herstellen als bestanden

Als u de back-upgegevens wilt herstellen als .bak bestanden in plaats van een database, kiest u de optie Herstellen als bestanden . De back-up van SQL DB kan worden hersteld naar elke doel-VM die is geregistreerd bij deze kluis.

$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
Herstellen als bestanden met een afzonderlijk herstelpunt
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Herstellen als bestanden met logboekpunt in tijd vanaf de meest recente volledige
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Herstellen als bestanden met een logboekpunt in de tijd vanaf een opgegeven volledige

Als u een specifieke volledige naam wilt geven die moet worden gebruikt voor herstel, gebruikt u de volgende opdracht:

$FileRestoreWithLogAndSpecificFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -FromFull $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID

Het uiteindelijke configuratieobject voor herstelpunten dat is verkregen uit Get-AzRecoveryServicesBackupWorkloadRecoveryConfig PowerShell-cmdlet bevat alle relevante informatie voor herstel en wordt weergegeven zoals hieronder wordt weergegeven.

TargetServer         : <SQL server name>
TargetInstance       : <Target Instance name>
RestoredDBName       : <Target Instance name>/azurebackup1_restored_3_19_2019_1850
OverwriteWLIfpresent : No
NoRecoveryMode       : Disabled
targetPhysicalPath   : {azurebackup1, azurebackup1_log}
ContainerId          : /Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;computeRG;SQLVMName
SourceResourceId     : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/computeRG/VMAppContainer/SQLVMName
RestoreRequestType   : Alternate WL Restore
RecoveryPoint        : Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.AzureWorkloadRecoveryPoint
PointInTime          : 1/1/0001 12:00:00 AM

U kunt de herstelde DB-naam, de velden OverwriteWLIfpresent, NoRecoveryMode en targetPhysicalPath bewerken. Meer informatie over de bestandspaden van het doel, zoals hieronder wordt weergegeven.

$AnotherInstanceWithFullConfig.targetPhysicalPath
MappingType SourceLogicalName SourcePath                  TargetPath
----------- ----------------- ----------                  ----------
Data        azurebackup1      F:\Data\azurebackup1.mdf    F:\Data\azurebackup1_1553001753.mdf
Log         azurebackup1_log  F:\Log\azurebackup1_log.ldf F:\Log\azurebackup1_log_1553001753.ldf

Stel de relevante PowerShell-eigenschappen in als tekenreekswaarden, zoals hieronder wordt weergegeven.

$AnotherInstanceWithFullConfig.OverwriteWLIfpresent = "Yes"
$AnotherInstanceWithFullConfig | fl
TargetServer         : <SQL server name>
TargetInstance       : <Target Instance name>
RestoredDBName       : <Target Instance name>/azurebackup1_restored_3_19_2019_1850
OverwriteWLIfpresent : Yes
NoRecoveryMode       : Disabled
targetPhysicalPath   : {azurebackup1, azurebackup1_log}
ContainerId          : /Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;computeRG;SQLVMName
SourceResourceId     : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/computeRG/VMAppContainer/SQLVMName
RestoreRequestType   : Alternate WL Restore
RecoveryPoint        : Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.AzureWorkloadRecoveryPoint
PointInTime          : 1/1/0001 12:00:00 AM

Belangrijk

Zorg ervoor dat het uiteindelijke configuratieobject voor herstel alle benodigde en juiste waarden bevat, omdat de herstelbewerking wordt gebaseerd op het configuratieobject.

Notitie

Als u de hele keten niet wilt herstellen, maar alleen een subset van bestanden, volgt u de stappen die hier worden beschreven.

Alternatieve herstel van werkbelasting naar een kluis in secundaire regio

Belangrijk

Ondersteuning voor herstel van secundaire regio's voor SQL vanuit PowerShell is beschikbaar via Az 6.0.0

Als u herstel tussen regio's hebt ingeschakeld, worden de herstelpunten ook gerepliceerd naar de secundaire, gekoppelde regio. Vervolgens kunt u deze herstelpunten ophalen en een herstel naar een computer activeren, aanwezig in die gekoppelde regio. Net als bij de normale herstelbewerking moet de doelmachine worden geregistreerd bij de doelkluis in de secundaire regio. De volgende reeks stappen moet het end-to-end-proces verduidelijken.

  • De back-upitems ophalen die naar de secundaire regio worden gerepliceerd
  • Voor een dergelijk item haalt u de herstelpunten op (afzonderlijke en/of logboeken) die worden gerepliceerd naar de secundaire regio
  • Kies vervolgens een doelserver, geregistreerd bij een kluis binnen de secundaire gekoppelde regio
  • Activeer de herstelbewerking naar die server en volg deze met behulp van de JobId.

Back-upitems ophalen uit secundaire regio

Haal alle SQL-back-upitems op uit de secundaire regio met de gebruikelijke opdracht, maar met een extra parameter om aan te geven dat deze items uit de secundaire regio moeten worden opgehaald.

$secondaryBkpItems = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload  -WorkloadType MSSQL  -VaultId $testVault.ID -UseSecondaryRegion
Afzonderlijke herstelpunten ophalen uit secundaire regio

Get-AzRecoveryServicesBackupRecoveryPoint gebruiken om afzonderlijke (volledige/differentiële) herstelpunten op te halen voor een back-up van SQL DB en een parameter toe te voegen om aan te geven dat dit herstelpunten zijn die zijn opgehaald uit de secundaire regio

$startDate = (Get-Date).AddDays(-7).ToUniversalTime()
$endDate = (Get-Date).ToUniversalTime()
Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -StartDate $startdate -EndDate $endDate -UseSecondaryRegion

De uitvoer is vergelijkbaar met het volgende voorbeeld

RecoveryPointId    RecoveryPointType  RecoveryPointTime      ItemName                             BackupManagemen
                                                                                                  tType
---------------    -----------------  -----------------      --------                             ---------------
6660368097802      Full               3/18/2019 8:09:35 PM   MSSQLSERVER;model             AzureWorkload

Gebruik het filter RecoveryPointId of een matrixfilter om het relevante herstelpunt op te halen.

$FullRPFromSec = Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -RecoveryPointId "6660368097802" -UseSecondaryRegion
Herstelpunten voor logboeken ophalen uit secundaire regio

Gebruik de PowerShell-cmdlet Get-AzRecoveryServicesBackupRecoveryLogChain met de parameter '-UseSecondaryRegion' die begin- en eindtijden retourneert van een niet-verbroken, continue logboekketen voor dat SQL-back-upitem uit de secundaire regio. Het gewenste tijdstip moet binnen dit bereik vallen.

Get-AzRecoveryServicesBackupRecoveryLogChain -Item $secondaryBkpItems[0] -VaultId $testVault.ID -UseSecondaryRegion

De uitvoer is vergelijkbaar met het volgende voorbeeld.

ItemName                       StartTime                      EndTime
--------                       ---------                      -------
SQLDataBase;MSSQLSERVER;azu... 3/18/2019 8:09:35 PM           3/19/2019 12:08:32 PM

De bovenstaande uitvoer betekent dat u kunt herstellen naar een bepaald tijdstip tussen de weergegeven begin- en eindtijd. De tijden zijn in UTC. Maak een bepaald tijdstip in PowerShell dat zich binnen het bovenstaande bereik bevindt.

Doelserver ophalen uit secundaire regio

Vanuit de secundaire regio hebben we een kluis en een doelserver nodig die is geregistreerd bij die kluis. Zodra we de doelcontainer voor de secundaire regio en het SQL-exemplaar hebben, kunnen we de bestaande cmdlets opnieuw gebruiken om een herstelworkloadconfiguratie te genereren. In dit document gaan we ervan uit dat de naam van de VM 'secondaryVM' is en dat de naam van het exemplaar binnen die VM 'MSSQLInstance' is

Eerst halen we de relevante kluis op die aanwezig is in de secundaire regio en halen we vervolgens de geregistreerde containers in die kluis op.

$PairedRegionVault = Get-AzRecoveryServicesVault -ResourceGroupName SecondaryRG -Name PairedVault
$secContainer =  Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -Status Registered  -VaultId $PairedRegionVault.ID -FriendlyName "secondaryVM"

Zodra de geregistreerde container is gekozen, halen we de SQL-exemplaren op in de container waarnaar de database moet worden hersteld. Hier gaan we ervan uit dat er 1 SQL-exemplaar binnen de 'secondaryVM' is en dat we dat exemplaar ophalen.

$secSQLInstance = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -ItemType SQLInstance -VaultId $PairedRegionVault.ID -Container $secContainer

De herstelconfiguratie voorbereiden

Zoals hierboven beschreven voor de normale SQL-herstelbewerking, kan dezelfde opdracht opnieuw worden gebruikt om de relevante herstelconfiguratie te genereren.

Voor volledige herstelbewerkingen vanuit secundaire regio
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
Herstel naar een logboekpunt vanuit secundaire regio
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $secondaryBkpItems[0] -TargetItem $secSQLInstance  -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer

Zodra de relevante configuratie is verkregen voor het herstellen van de primaire regio of het herstellen van secundaire regio's, kan dezelfde herstelopdracht worden gebruikt om herstelbewerkingen te activeren en later bij te houden met behulp van de taak-id's.

Herstellen met relevante configuratie

Zodra het relevante herstelconfiguratieobject is verkregen en geverifieerd, gebruikt u de PowerShell-cmdlet Restore-AzRecoveryServicesBackupItem om het herstelproces te starten.

Restore-AzRecoveryServicesBackupItem -WLRecoveryConfig $AnotherInstanceWithLogConfig -VaultId $testVault.ID -RestoreToSecondaryRegion

De herstelbewerking retourneert een taak die moet worden bijgehouden.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
MSSQLSERVER/m... Restore              InProgress           3/17/2019 10:02:45 AM                                3274xg2b-e4fg-5952-89b4-8cb566gc1748

SQL-back-ups beheren

Back-up op aanvraag

Zodra back-ups zijn ingeschakeld voor een database, kunt u ook een back-up op aanvraag activeren voor de database met behulp van de PowerShell-cmdlet Backup-AzRecoveryServicesBackupItem . In het volgende voorbeeld wordt een volledige back-up met alleen kopiëren geactiveerd op een SQL-database waarvoor compressie is ingeschakeld en moet de back-up met alleen-kopiëren gedurende 60 dagen worden bewaard.

Notitie

Back-ups met alleen-kopiëren zijn ideaal voor langetermijnretentie, omdat ze geen afhankelijkheden hebben van andere back-uptypen, zoals logboeken. Een volledige back-up wordt behandeld als een bovenliggend element van volgende logboekback-ups en daarom is de retentie gekoppeld aan het bewaren van logboeken in beleid. Daarom wordt de door de klant verstrekte verlooptijd gehonoreerd voor volledige back-ups met alleen-kopiëren en niet voor 'volledige' back-ups. Een volledige bewaartijd voor back-ups wordt automatisch ingesteld op 45 dagen vanaf de huidige tijd. Het wordt hier ook beschreven.

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID
$endDate = (Get-Date).AddDays(45).ToUniversalTime()
Backup-AzRecoveryServicesBackupItem -Item $bkpItem -BackupType CopyOnlyFull -EnableCompression -VaultId $testVault.ID -ExpiryDateTimeUTC $endDate

De back-upopdracht op aanvraag retourneert een taak die moet worden bijgehouden.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
MSSQLSERVER/m... Backup               InProgress           3/18/2019 8:41:27 PM                                2516bb1a-d3ef-4841-97a3-9ba455fb0637

Als de uitvoer verloren gaat of als u de relevante taak-id wilt ophalen, haalt u de lijst met taken op uit de Azure Backup-service en volgt u deze en de bijbehorende details.

Beleid voor back-upitems wijzigen

U kunt het beleid van het item Policy1 Policy2waarvan een back-up is gemaakt wijzigen in . Als u wilt schakelen tussen beleidsregels voor een back-upitem, haalt u het relevante beleid op en maakt u een back-up van het item en gebruikt u de opdracht Enable-AzRecoveryServices met back-upitem als parameter.

$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName>
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType MSSQL -BackupManagementType AzureWorkload -Name "<BackupItemName>"
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1

De opdracht wacht totdat de back-upconfiguratie is voltooid en retourneert de volgende uitvoer.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
master           ConfigureBackup      Completed            3/18/2019 8:00:21 PM      3/18/2019 8:02:16 PM      654e8aa2-4096-402b-b5a9-e5e71a496c4e

Een bestaand back-upbeleid bewerken

Als u een bestaand beleid wilt bewerken, gebruikt u de opdracht Set-AzRecoveryServicesBackupProtectionPolicy .

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -SchedulePolicy $SchPol -RetentionPolicy $RetPol

Controleer de back-uptaken na enige tijd om eventuele fouten bij te houden. Als dat zo is, moet u de problemen oplossen. Voer vervolgens de opdracht Edit Policy opnieuw uit met de parameter FixForInconsistentItems om het beleid opnieuw te bewerken voor alle back-upitems waarvoor de bewerking eerder is mislukt.

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -FixForInconsistentItems

SQL-VM's opnieuw registreren

Waarschuwing

Lees dit document voor meer informatie over de symptomen en oorzaken van fouten voordat u opnieuw probeert te registreren

Als u de herregistratie van de SQL-VM wilt activeren, haalt u de relevante back-upcontainer op en geeft u deze door aan de register-cmdlet.

$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
Register-AzRecoveryServicesBackupContainer -Container $SQLContainer -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID

Beveiliging stoppen

Gegevens behouden

Als u de beveiliging wilt stoppen, kunt u de PowerShell-cmdlet Disable-AzRecoveryServicesBackupProtection gebruiken. Hierdoor worden de geplande back-ups gestopt, maar er wordt tot nu toe een back-up gemaakt van de gegevens.

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $testVault.ID

Back-upgegevens verwijderen

Als u de opgeslagen back-upgegevens in de kluis volledig wilt verwijderen, voegt u de vlag -RemoveRecoveryPoints toe/schakelt u over naar de beveiligingsopdracht Uitschakelen.

Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $testVault.ID -RemoveRecoveryPoints

Automatische beveiliging uitschakelen

Als automatische beveiliging is geconfigureerd op een SQLInstance, kunt u deze uitschakelen met behulp van de Cmdlet Disable-AzRecoveryServicesBackupAutoProtection PowerShell.

Zoek de exemplaren waarvoor automatische beveiliging is ingeschakeld met behulp van de volgende PowerShell-opdracht.

Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -VaultId $testVault.ID | Where-Object {$_.IsAutoProtected -eq $true}

Kies vervolgens de relevante naam van het beveiligbare item en de servernaam uit de uitvoer en schakel automatische beveiliging voor deze exemplaren uit.

$SQLInstance = Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLInstance -VaultId $testVault.ID -Name "<Protectable Item name>" -ServerName "<Server Name>"
Disable-AzRecoveryServicesBackupAutoProtection -InputItem $SQLInstance -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID

Registratie van SQL-VM ongedaan maken

Als alle DB's van een SQL-server niet meer zijn beveiligd en er geen back-upgegevens bestaan, kunt u de registratie van de SQL-VM uit deze kluis ongedaan maken. Alleen dan kunt u DB's beveiligen naar een andere kluis. Gebruik de cmdlet Unregister-AzRecoveryServicesBackupContainer PowerShell om de registratie van de SQL-VM ongedaan te maken.

$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
 Unregister-AzRecoveryServicesBackupContainer -Container $SQLContainer -VaultId $testVault.ID

Azure Backup-taken bijhouden

Het is belangrijk te weten dat Azure Backup alleen door gebruikers geactiveerde taken bijhoudt in SQL Backup. Geplande back-ups (inclusief logboekback-ups) zijn niet zichtbaar in de portal of PowerShell. Als geplande taken echter mislukken, wordt er een back-upwaarschuwing gegenereerd en weergegeven in de portal. Gebruik Azure Monitor om alle geplande taken en andere relevante informatie bij te houden.

Gebruikers kunnen geactiveerde bewerkingen op aanvraag/door de gebruiker geactiveerde bewerkingen bijhouden met de JobID die wordt geretourneerd in de uitvoer van asynchrone taken, zoals back-up. Gebruik de PowerShell-cmdlet Get-AzRecoveryServicesBackupJobDetail om de taak en de details ervan bij te houden.

 Get-AzRecoveryServicesBackupJobDetails -JobId 2516bb1a-d3ef-4841-97a3-9ba455fb0637 -VaultId $testVault.ID

Gebruik de PowerShell-cmdlet Get-AzRecoveryServicesBackupJob om de lijst met taken op aanvraag en hun statussen op te halen uit de Azure Backup-service. In het volgende voorbeeld worden alle actieve SQL-taken geretourneerd.

Get-AzRecoveryServicesBackupJob -Status InProgress -BackupManagementType AzureWorkload

Als u een actieve taak wilt annuleren, gebruikt u de PowerShell-cmdlet Stop-AzRecoveryServicesBackupJob .

SQL AlwaysOn-beschikbaarheidsgroepen beheren

Voor SQL AlwaysOn-beschikbaarheidsgroepen moet u alle knooppunten van de beschikbaarheidsgroep (AG) registreren. Zodra de registratie voor alle knooppunten is voltooid, wordt een SQL-beschikbaarheidsgroepobject logisch gemaakt onder beveiligbare items. De databases onder de SQL-beschikbaarheidsgroep worden vermeld als 'SQLDatabase'. De knooppunten worden weergegeven als zelfstandige exemplaren en de standaard SQL-databases eronder worden ook vermeld als SQL-databases.

Stel dat een SQL AG twee knooppunten heeft: sql-server-0 en sql-server-1 en 1 SQL AG DB. Zodra beide knooppunten zijn geregistreerd, worden de volgende onderdelen weergegeven als u de beveiligbare items weergeeft

  • Een SQL AG-object - beveiligbaar itemtype als SQLAvailabilityGroup
  • Een SQL AG DB - beveiligbaar itemtype als SQLDatabase
  • sql-server-0 - beveiligbaar itemtype als SQLInstance
  • sql-server-1 - beveiligbaar itemtype als SQLInstance
  • Eventuele standaard SQL DB's (master, model, msdb) onder sql-server-0 - beveiligbaar itemtype als SQLDatabase
  • Eventuele standaard SQL DB's (master, model, msdb) onder sql-server-1 - beveiligbaar itemtype als SQLDatabase

sql-server-0, sql-server-1 wordt ook vermeld als 'AzureVMAppContainer' wanneer back-upcontainers worden vermeld.

Haal gewoon de relevante database op om back-ups in te schakelen en de on-demand back-up te maken en PowerShell-cmdlets te herstellen, zijn identiek.