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
- Meer informatie over Recovery Services-kluizen.
- Lees meer over de functiemogelijkheden voor het maken van back-ups van SQL-DB's binnen Azure-VM's.
- Controleer de PowerShell-objecthiërarchie voor Recovery Services.
Recovery Services-objecthiërarchie
De objecthiërarchie wordt samengevat in het volgende diagram.
Raadpleeg de naslaginformatie voor de Az.RecoveryServices-cmdlet in de Azure-bibliotheek.
Instellen en installeren
Stel PowerShell als volgt in:
Download de nieuwste versie van Az PowerShell. De minimale versie is 1.5.0.
Zoek de Azure Backup PowerShell-cmdlets met deze opdracht:
Get-Command *azrecoveryservices*
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.
Meld u aan bij uw Azure-account met Connect-AzAccount.
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.
Koppel het abonnement dat u wilt gebruiken aan het account, omdat een account meerdere abonnementen kan hebben.
Select-AzSubscription -SubscriptionName $SubscriptionName
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"
Controleer of de providers zijn geregistreerd:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
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.
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"
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"
Geef het type redundantie op dat moet worden gebruikt voor de kluisopslag.
- U kunt lokaal redundante opslag, geografisch redundante opslag of zone-redundante opslag gebruiken.
- In het volgende voorbeeld wordt de
-BackupStorageRedundancy
optie ingesteld voor de set-AzRecoveryServicesBackupProperty cmd voortestvault
ingesteld opGeoRedundant
.
$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:
- Een back-upbeleid is gekoppeld aan ten minste één bewaarbeleid. Een bewaarbeleid bepaalt hoe lang een herstelpunt wordt bewaard voordat het wordt verwijderd.
- Bekijk de standaardretentie van back-upbeleid met Behulp van Get-AzRecoveryServicesBackupRetentionPolicyObject.
- Bekijk de standaardplanning voor back-upbeleid met Behulp van Get-AzRecoveryServicesBackupSchedulePolicyObject.
- U gebruikt de cmdlet New-AzRecoveryServicesBackupProtectionPolicy om een nieuw back-upbeleid te maken. U kunt de plannings- en bewaarbeleidsobjecten invoeren.
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
Policy2
waarvan 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.