Dela via


Säkerhetskopiera och återställa SQL-databaser på virtuella Azure-datorer med PowerShell

Den här artikeln beskriver hur du använder Azure PowerShell för att säkerhetskopiera och återställa en SQL DB på en virtuell Azure-dator med hjälp av Azure Backup Recovery Services-valv.

I den här artikeln förklaras hur du

  • Konfigurera PowerShell och registrera Azure Recovery Services-providern.
  • Skapa ett Recovery Services-valv.
  • Konfigurera säkerhetskopiering för SQL DB på en virtuell Azure-dator.
  • Kör ett säkerhetskopieringsjobb.
  • Återställ en säkerhetskopierad SQL DB.
  • Övervaka säkerhetskopierings- och återställningsjobb.

Innan du börjar

Objekthierarki för Recovery Services

Objekthierarkin sammanfattas i följande diagram.

Objekthierarki för Recovery Services

Granska referensreferensen för Az.RecoveryServices-cmdleten i Azure-biblioteket.

Konfigurera och installera

Konfigurera PowerShell på följande sätt:

  1. Ladda ned den senaste versionen av Az PowerShell. Den lägsta version som krävs är 1.5.0.

  2. Hitta Azure Backup PowerShell-cmdletar med det här kommandot:

    Get-Command *azrecoveryservices*
    
  3. Granska alias och cmdletar för Azure Backup och Recovery Services-valvet. Här är ett exempel på vad du kan se. Det är inte en fullständig lista över cmdletar.

    Lista över Recovery Services-cmdletar

  4. Logga in på ditt Azure-konto med Connect-AzAccount.

  5. På den webbsida som visas uppmanas du att ange dina kontoautentiseringsuppgifter.

    • Alternativt kan du inkludera dina kontoautentiseringsuppgifter som en parameter i cmdleten Connect-AzAccount med -Credential.
    • Om du är en CSP-partner som arbetar för en klientorganisation anger du kunden som en klientorganisation med hjälp av deras klient-ID eller klientorganisationens primära domännamn. Ett exempel är Connect-AzAccount -Tenant fabrikam.com.
  6. Associera den prenumeration som du vill använda med kontot eftersom ett konto kan ha flera prenumerationer.

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  7. Om du använder Azure Backup för första gången använder du cmdleten Register-AzResourceProvider för att registrera Azure Recovery Services-providern med din prenumeration.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  8. Kontrollera att providrar har registrerats:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  9. I kommandots utdata kontrollerar du att RegistrationState ändras till Registrerad. Om den inte gör det kör du cmdleten Register-AzResourceProvider igen.

Skapa ett Recovery Services-valv

Följ de här stegen för att skapa ett Recovery Services-valv.

Recovery Services-valvet är en Resource Manager-resurs, så du måste placera det i en resursgrupp. Du kan använda en befintlig resursgrupp eller skapa en resursgrupp med cmdleten New-AzResourceGroup . När du skapar en resursgrupp anger du namnet och platsen för resursgruppen.

  1. Ett valv placeras i en resursgrupp. Om du inte har någon befintlig resursgrupp skapar du en ny med New-AzResourceGroup. I det här exemplet skapar vi en ny resursgrupp i regionen USA, västra.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Använd cmdleten New-AzRecoveryServicesVault för att skapa valvet. Ange samma plats för valvet som användes för resursgruppen.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Ange vilken typ av redundans som ska användas för valvlagringen.

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

Visa valven i en prenumeration

Om du vill visa alla valv i prenumerationen använder du Get-AzRecoveryServicesVault.

Get-AzRecoveryServicesVault

Utdata liknar följande. Den associerade resursgruppen och platsen tillhandahålls.

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

Ange valvkontexten

Lagra valvobjektet i en variabel och ange valvkontexten.

  • Många Azure Backup-cmdletar kräver Recovery Services-valvobjektet som indata, så det är praktiskt att lagra valvobjektet i en variabel.
  • Valvets sammanhang är typen av data som skyddas i valvet. Ange den med Set-AzRecoveryServicesVaultContext. När kontexten har angetts gäller den för alla efterföljande cmdletar.

I följande exempel anges valvkontexten för testvault

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

Hämta valv-ID:t

Vi planerar att inaktuella inställningen för valvkontexten i enlighet med Azure PowerShell-riktlinjerna. I stället kan du lagra eller hämta valv-ID:t och skicka det till relevanta kommandon på följande sätt:

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

Konfigurera en säkerhetskopieringspolicy

En säkerhetskopieringsprincip anger schemat för säkerhetskopieringar och hur länge säkerhetskopieringsåterställningspunkter ska behållas:

  • En säkerhetskopieringsprincip är associerad med minst en kvarhållningsprincip. En kvarhållningsprincip definierar hur länge en återställningspunkt sparas innan den tas bort.
  • Visa standardkvarhållning av säkerhetskopieringsprinciper med Hjälp av Get-AzRecoveryServicesBackupRetentionPolicyObject.
  • Visa standardschemat för säkerhetskopieringsprinciper med Get-AzRecoveryServicesBackupSchedulePolicyObject.
  • Du använder cmdleten New-AzRecoveryServicesBackupProtectionPolicy för att skapa en ny säkerhetskopieringsprincip. Du anger schema- och kvarhållningsprincipobjekten.

Som standard definieras en starttid i objektet Schemalägg princip. Använd följande exempel för att ändra starttiden till önskad starttid. Önskad starttid bör också vara i UTC. I följande exempel förutsätts att önskad starttid är 01:00 UTC för dagliga säkerhetskopieringar.

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

Viktigt!

Du behöver bara ange starttiden på 30 minuters multiplar. I exemplet ovan kan det bara vara "01:00:00" eller "02:30:00". Starttiden får inte vara "01:15:00".

I följande exempel lagras schemaprincipen och kvarhållningsprincipen i variabler. Sedan används dessa variabler som parametrar för en ny princip (NewSQLPolicy). NewSQLPolicy tar en daglig "fullständig" säkerhetskopiering, behåller den i 180 dagar och tar en loggsäkerhetskopia var 2:e timme

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

Utdata liknar följande.

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

Aktivera säkerhetskopiering

Registrera den virtuella SQL-datorn

För säkerhetskopiering av virtuella Azure-datorer och Azure-filresurser kan Backup-tjänsten ansluta till dessa Azure Resource Manager-resurser och hämta relevant information. Eftersom SQL är ett program inom en virtuell Azure-dator behöver Backup-tjänsten behörighet att komma åt programmet och hämta nödvändig information. För att kunna göra det måste du "registrera" den virtuella Azure-dator som innehåller SQL-programmet med ett Recovery Services-valv. När du har registrerat en virtuell SQL-dator med ett valv kan du endast skydda SQL DB:erna till valvet. Använd Register-AzRecoveryServicesBackupContainer PowerShell-cmdleten för att registrera den virtuella datorn.

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

Kommandot returnerar en "säkerhetskopieringscontainer" för den här resursen och statusen kommer att vara "registrerad"

Kommentar

Om force-parametern inte anges uppmanas du att bekräfta med texten "Vill du inaktivera skyddet för den här containern". Ignorera den här texten och säg "Y" för att bekräfta. Det här är ett känt problem och vi arbetar med att ta bort texten och kravet på force-parametern.

Hämtar SQL-databaser

När registreringen är klar kan Backup-tjänsten visa en lista över alla tillgängliga SQL-komponenter i den virtuella datorn. Om du vill visa alla SQL-komponenter som ännu inte har säkerhetskopierats till det här valvet använder du Cmdleten Get-AzRecoveryServicesBackupProtectableItem PowerShell

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

Utdata visar alla oskyddade SQL-komponenter för alla virtuella SQL-datorer som är registrerade i det här valvet med Objekttyp och ServerName. Du kan filtrera ytterligare till en viss virtuell SQL-dator genom att skicka parametern "-Container" eller använda kombinationen "Namn" och "ServerName" tillsammans med ItemType-flaggan för att komma fram till ett unikt SQL-objekt.

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

Konfigurera säkerhetskopiering

Nu när vi har den sql-databas som krävs och den princip som den behöver säkerhetskopieras med kan vi använda cmdleten Enable-AzRecoveryServicesBackupProtection för att konfigurera säkerhetskopiering för den här SQL DB:en.

Enable-AzRecoveryServicesBackupProtection -ProtectableItem $SQLDB -Policy $NewSQLPolicy

Kommandot väntar tills säkerhetskopieringskonfigurationen har slutförts och returnerar följande utdata.

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

Hämtar nya SQL DB:er

När datorn har registrerats hämtar Backup-tjänsten information om de tillgängliga databaserna. Om SQL-databaser eller SQL-instanser läggs till i den registrerade datorn senare måste du manuellt utlösa säkerhetskopieringstjänsten för att utföra en ny "förfrågan" för att få alla oskyddade databaser (inklusive de nyligen tillagda) igen. Använd powershell-cmdleten Initialize-AzRecoveryServicesBackupItem på den virtuella SQL-datorn för att utföra en ny förfrågan. Kommandot väntar tills åtgärden har slutförts. Använd senare cmdleten Get-AzRecoveryServicesBackupProtectableItem PowerShell för att hämta listan över de senaste oskyddade SQL-komponenterna.

$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

När relevanta skyddsbara objekt har hämtats aktiverar du säkerhetskopiorna enligt instruktionerna i avsnittet ovan. Om man inte vill identifiera nya databaser manuellt kan de välja automatisk skydd enligt beskrivningen nedan.

Aktivera automatiskt skydd

Du kan konfigurera säkerhetskopiering så att alla databaser som läggs till i framtiden automatiskt skyddas med en viss princip. Om du vill aktivera automatisk skydd använder du PowerShell-cmdleten Enable-AzRecoveryServicesBackupAutoProtection .

Eftersom instruktionen är att säkerhetskopiera alla framtida databaser utförs åtgärden på SQLInstance-nivå.

$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

När avsikten för automatisk skydd har angetts sker undersökningen av datorn för att hämta nyligen tillagda databaser som en schemalagd bakgrundsaktivitet var 8:e timme.

Återställa SQL-databaser

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

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

Kontrollera de krav som anges här innan du återställer SQL-databaser.

Varning

På grund av ett säkerhetsproblem som rör RBAC var vi tvungna att införa en icke-bakåtkompatibel ändring i återställningskommandona för SQL DB via PowerShell. Uppgradera till Az 6.0.0-versionen eller senare så att rätt återställningskommandon skickas via PowerShell. De senaste PS-kommandona finns nedan.

Hämta först relevant säkerhetskopierad SQL DB med hjälp av PowerShell-cmdleten Get-AzRecoveryServicesBackupItem .

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

Hämta relevant återställningstid

Som beskrivs ovan kan du återställa den säkerhetskopierade SQL DB:en till en fullständig/differentiell kopia ELLER till en loggpunkt i tid.

Hämta distinkta återställningspunkter

Använd Get-AzRecoveryServicesBackupRecoveryPoint för att hämta distinkta återställningspunkter (fullständig/differentiell) för en säkerhetskopierad SQL DB.

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

Utdata liknar följande exempel

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

Använd filtret RecoveryPointId eller ett matrisfilter för att hämta relevant återställningspunkt.

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

Hämta återställningspunkt för tidpunkt

Om du vill återställa databasen till en viss tidpunkt använder du PowerShell-cmdleten Get-AzRecoveryServicesBackupRecoveryLogChain . Cmdleten returnerar en lista med datum som representerar start- och sluttider för en obruten, kontinuerlig loggkedja för sql-säkerhetskopieringsobjektet. Önskad tidpunkt bör ligga inom det här intervallet.

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

Utdata liknar följande exempel.

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

Ovanstående utdata innebär att du kan återställa till valfri tidpunkt mellan den visade starttiden och sluttiden. Tiderna är i UTC. Konstruera alla tidpunkter i PowerShell som ligger inom det intervall som visas ovan.

Kommentar

När en loggpunkt har valts för återställning behöver du inte ange startpunkten, dvs. den fullständiga säkerhetskopiering som databasdatabasen återställs från. Azure Backup-tjänsten tar hand om hela återställningsplanen, dvs. vilken fullständig säkerhetskopiering du vill välja, vilka loggsäkerhetskopior som ska tillämpas och så vidare.

Fastställa återställningskonfiguration

För en SQL DB-återställning stöds följande återställningsscenarier.

  • Åsidosätta den säkerhetskopierade SQL DB med data från en annan återställningspunkt – OriginalWorkloadRestore
  • Återställa SQL DB som en ny databas i samma SQL-instans – AlternateWorkloadRestore
  • Återställa SQL DB som en ny databas i en annan SQL-instans på en annan virtuell SQL-dator – AlternateWorkloadRestore
  • Återställa SQL DB som .bak -RestoreAsFiles

När du har hämtat den relevanta återställningspunkten (distinkt eller log point-in-time) använder du Get-AzRecoveryServicesBackupWorkloadRecoveryConfig PowerShell-cmdleten för att hämta återställningskonfigurationsobjektet enligt önskad återställningsplan.

Ursprunglig återställning av arbetsbelastning

Om du vill åsidosätta den säkerhetskopierade databasen med data från återställningspunkten anger du bara rätt flagga och relevant återställningspunkt enligt följande exempel.

Ursprunglig återställning med distinkt återställningspunkt
$OverwriteWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -OriginalWorkloadRestore -VaultId $testVault.ID
Ursprunglig återställning med loggpunkt i tid
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem  -OriginalWorkloadRestore -VaultId $testVault.ID

Alternativ återställning av arbetsbelastning

Viktigt!

En säkerhetskopierad SQL DB kan bara återställas som en ny databas till en annan SQLInstance på en virtuell Azure-dator som är registrerad i det här valvet.

Om SQLInstance-målet ligger inom en annan virtuell Azure-dator, ser du till att det är registrerat i det här valvet och att relevant SQLInstance visas som ett skyddsbart objekt. I det här dokumentet antar vi att SQLInstance-målnamnet är MSSQLSERVER i en annan virtuell dator "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

Skicka sedan bara den relevanta återställningspunkten, mål-SQL-instansen med rätt flagga enligt nedan och målcontainern under vilken SQL-målinstansen finns.

Alternativ återställning med distinkt återställningspunkt
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Alternativ återställning med loggpunkt i tid
$AnotherInstanceWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Återställa som filer

Om du vill återställa säkerhetskopierade data som .bak filer i stället för en databas väljer du alternativet Återställ som filer . Den säkerhetskopierade SQL DB:n kan återställas till alla virtuella måldatorer som är registrerade i det här valvet.

$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
Återställa som filer med en distinkt återställningspunkt
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Återställa som filer med loggpunkt i tiden från den senaste fullständiga
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Återställa som filer med loggpunkt i tid från en angiven fullständig

Om du vill ge en specifik fullständig som ska användas för återställning använder du följande kommando:

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

Det sista konfigurationsobjektet för återställningspunkter som hämtats från Get-AzRecoveryServicesBackupWorkloadRecoveryConfig PowerShell-cmdleten har all relevant information för återställning och visas nedan.

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

Du kan redigera det återställda DB-namnet, OverwriteWLIfpresent, NoRecoveryMode och targetPhysicalPath-fälten. Få mer information om målfilsökvägarna enligt nedan.

$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

Ange relevanta PowerShell-egenskaper som strängvärden enligt nedan.

$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

Viktigt!

Kontrollera att det slutliga återställningskonfigurationsobjektet har alla nödvändiga och korrekta värden eftersom återställningsåtgärden baseras på konfigurationsobjektet.

Kommentar

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

Alternativ arbetsbelastningsåterställning till ett valv i en sekundär region

Viktigt!

Stöd för återställning av sekundär region för SQL från PowerShell är tillgängligt från Az 6.0.0

Om du har aktiverat återställning mellan regioner replikeras även återställningspunkterna till den sekundära, kopplade regionen. Sedan kan du hämta dessa återställningspunkter och utlösa en återställning till en dator som finns i den kopplade regionen. Precis som med den normala återställningen bör måldatorn registreras till målvalvet i den sekundära regionen. Följande stegsekvens bör klargöra processen från slutpunkt till slutpunkt.

  • Hämta de säkerhetskopierade objekt som replikeras till den sekundära regionen
  • För ett sådant objekt hämtar du återställningspunkterna (distinkta och/eller loggar) som replikeras till den sekundära regionen
  • Välj sedan en målserver som är registrerad i ett valv i den sekundära parkopplade regionen
  • Utlös återställningen till servern och spåra den med hjälp av JobId.

Hämta säkerhetskopieringsobjekt från en sekundär region

Hämta alla SQL-säkerhetskopieringsobjekt från den sekundära regionen med det vanliga kommandot, men med en extra parameter som anger att dessa objekt ska hämtas från den sekundära regionen.

$secondaryBkpItems = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload  -WorkloadType MSSQL  -VaultId $testVault.ID -UseSecondaryRegion
Hämta distinkta återställningspunkter från en sekundär region

Använd Get-AzRecoveryServicesBackupRecoveryPoint för att hämta distinkta återställningspunkter (fullständig/differentiell) för en säkerhetskopierad SQL DB och lägga till en parameter som anger att dessa är återställningspunkter som hämtas från den sekundära regionen

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

Utdata liknar följande exempel

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

Använd filtret RecoveryPointId eller ett matrisfilter för att hämta relevant återställningspunkt.

$FullRPFromSec = Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -RecoveryPointId "6660368097802" -UseSecondaryRegion
Hämta loggåterställningspunkter från en sekundär region

Använd Get-AzRecoveryServicesBackupRecoveryLogChain PowerShell-cmdleten med parametern "-UseSecondaryRegion" som returnerar start- och sluttider för en obruten, kontinuerlig loggkedja för sql-säkerhetskopieringsobjektet från den sekundära regionen. Önskad tidpunkt bör ligga inom det här intervallet.

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

Utdata liknar följande exempel.

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

Ovanstående utdata innebär att du kan återställa till valfri tidpunkt mellan den visade starttiden och sluttiden. Tiderna är i UTC. Konstruera alla tidpunkter i PowerShell som ligger inom det intervall som visas ovan.

Hämta målservern från den sekundära regionen

Från den sekundära regionen behöver vi ett valv och en målserver registrerad i valvet. När vi har den sekundära regionmålcontainern och SQL-instansen kan vi återanvända de befintliga cmdletarna för att generera en återställningsarbetsbelastningskonfiguration. I det här dokumentet antar vi att den virtuella datorns namn är "secondaryVM" och att instansnamnet i den virtuella datorn är "MSSQLInstance"

Först hämtar vi det relevanta valvet som finns i den sekundära regionen och hämtar sedan de registrerade containrarna i valvet.

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

När den registrerade containern har valts hämtar vi SQL-instanserna i containern som databasen ska återställas till. Här förutsätter vi att det finns 1 SQL-instans i "secondaryVM" och vi hämtar den instansen.

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

Förbereda återställningskonfigurationen

Som beskrivs ovan för den normala SQL-återställningen kan samma kommando återanvändas för att generera relevant återställningskonfiguration.

För fullständiga återställningar från en sekundär region
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
För återställning till loggpunkt i tid från sekundär region
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $secondaryBkpItems[0] -TargetItem $secSQLInstance  -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer

När den relevanta konfigurationen hämtas för återställning av primär region eller återställning av sekundär region kan samma återställningskommando användas för att utlösa återställningar och spåras senare med hjälp av job-ID:erna.

Återställa med relevant konfiguration

När det relevanta återställningskonfigurationsobjektet har hämtats och verifierats använder du PowerShell-cmdleten Restore-AzRecoveryServicesBackupItem för att starta återställningsprocessen.

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

Återställningsåtgärden returnerar ett jobb som ska spåras.

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

Hantera SQL-säkerhetskopior

Säkerhetskopiering på begäran

När säkerhetskopieringen har aktiverats för en databas kan du också utlösa en säkerhetskopiering på begäran för databasen med hjälp av Cmdleten Backup-AzRecoveryServicesBackupItem PowerShell. I följande exempel utlöses en fullständig kopieringssäkerhetskopia på en SQL DB med komprimering aktiverad och den fullständiga kopieringssäkerhetskopian ska behållas i 60 dagar.

Kommentar

Säkerhetskopieringar med endast kopiering är idealiska för långsiktig kvarhållning eftersom de inte har några beroenden för andra säkerhetskopieringstyper, till exempel loggar. En fullständig säkerhetskopia behandlas som överordnad till efterföljande loggsäkerhetskopior och därför är kvarhållningen kopplad till loggkvarhållning i principen. Därför respekteras den angivna förfallotiden för kopieringsbefriade säkerhetskopior och inte för "fullständiga" säkerhetskopior. En fullständig kvarhållningstid för säkerhetskopior anges automatiskt i 45 dagar från den aktuella tiden. Den finns också dokumenterad här.

$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

Kommandot för säkerhetskopiering på begäran returnerar ett jobb som ska spåras.

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

Om utdata går förlorade eller om du vill hämta relevant jobb-ID hämtar du listan över jobb från Azure Backup-tjänsten och spårar den och dess information.

Ändra princip för säkerhetskopieringsobjekt

Du kan ändra principen för det säkerhetskopierade objektet från Policy1 till Policy2. Om du vill växla principer för ett säkerhetskopierat objekt hämtar du relevant princip och säkerhetskopierar objektet och använder kommandot Enable-AzRecoveryServices med säkerhetskopieringsobjektet som parameter.

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

Kommandot väntar tills säkerhetskopieringskonfigurationen har slutförts och returnerar följande utdata.

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

Redigera en befintlig säkerhetskopieringsprincip

Om du vill redigera en befintlig princip använder du kommandot Set-AzRecoveryServicesBackupProtectionPolicy .

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

Kontrollera säkerhetskopieringsjobben efter att en tid har passerat för att spåra eventuella fel. Om det finns det måste du åtgärda problemen. Kör sedan kommandot edit policy igen med parametern FixForInconsistentItems för att försöka redigera principen på alla säkerhetskopieringsobjekt som åtgärden misslyckades tidigare för.

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -FixForInconsistentItems

Registrera om virtuella SQL-datorer

Varning

Läs det här dokumentet för att förstå felsymptomen och orsakerna innan du försöker registrera igen

Om du vill utlösa omregistrering av den virtuella SQL-datorn hämtar du relevant säkerhetskopieringscontainer och skickar den till register-cmdleten.

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

Stoppa skydd

Behålla data

Om du vill stoppa skyddet kan du använda PowerShell-cmdleten Disable-AzRecoveryServicesBackupProtection . Detta stoppar de schemalagda säkerhetskopiorna, men de data som säkerhetskopieras tills nu behålls för alltid.

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

Ta bort säkerhetskopieringsdata

För att helt ta bort lagrade säkerhetskopieringsdata i valvet lägger du bara till flaggan-RemoveRecoveryPoints i skyddskommandot "inaktivera".

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

Inaktivera automatiskt skydd

Om automatisk skydd har konfigurerats på en SQLInstance kan du inaktivera det med powershell-cmdleten Disable-AzRecoveryServicesBackupAutoProtection .

Leta reda på de instanser där automatiskt skydd är aktiverat med hjälp av följande PowerShell-kommando.

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

Välj sedan det relevanta skyddsbara objektnamnet och servernamnet från utdata och inaktivera automatiskt skydd för dessa instanser.

$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

Avregistrera virtuell SQL-dator

Om alla databaser för en SQL-server inte längre är skyddade och det inte finns några säkerhetskopierade data kan du avregistrera den virtuella SQL-datorn från det här valvet. Först då kan du skydda databaser till ett annat valv. Använd PowerShell-cmdleten Unregister-AzRecoveryServicesBackupContainer för att avregistrera den virtuella SQL-datorn.

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

Spåra Azure Backup-jobb

Det är viktigt att observera att Azure Backup endast spårar användarutlösta jobb i SQL-säkerhetskopiering. Schemalagda säkerhetskopior (inklusive loggsäkerhetskopior) visas inte i portalen eller PowerShell. Men om några schemalagda jobb misslyckas genereras en säkerhetskopieringsavisering och visas i portalen. Använd Azure Monitor för att spåra alla schemalagda jobb och annan relevant information.

Användare kan spåra åtgärder på begäran/användarinaktiverade åtgärder med JobID som returneras i utdata från asynkrona jobb, till exempel säkerhetskopiering. Använd PowerShell-cmdleten Get-AzRecoveryServicesBackupJobDetail för att spåra jobb och dess information.

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

Om du vill hämta listan över jobb på begäran och deras status från Azure Backup-tjänsten använder du Cmdleten Get-AzRecoveryServicesBackupJob PowerShell. I följande exempel returneras alla pågående SQL-jobb.

Get-AzRecoveryServicesBackupJob -Status InProgress -BackupManagementType AzureWorkload

Om du vill avbryta ett pågående jobb använder du PowerShell-cmdleten Stop-AzRecoveryServicesBackupJob .

Hantera SQL AlwaysOn-tillgänglighetsgrupper

För SQL AlwaysOn-tillgänglighetsgrupper måste du registrera alla noder i tillgänglighetsgruppen (AG). När registreringen är klar för alla noder skapas ett SQL-tillgänglighetsgruppobjekt logiskt under skyddsbara objekt. Databaserna under SQL AG visas som "SQLDatabase". Noderna visas som fristående instanser och sql-standarddatabaserna under dem visas också som SQL-databaser.

Anta till exempel att en SQL AG har två noder: sql-server-0 och sql-server-1 och 1 SQL AG DB. När båda dessa noder har registrerats visas följande komponenter om du listar de skyddsbara objekten

  • Ett SQL AG-objekt – skyddsbar objekttyp som SQLAvailabilityGroup
  • En SQL AG DB – skyddsbar objekttyp som SQLDatabase
  • sql-server-0 – skyddsbar objekttyp som SQLInstance
  • sql-server-1 – skyddsbar objekttyp som SQLInstance
  • Alla standard-SQL DB:er (master, modell, msdb) under sql-server-0 – skyddsbar objekttyp som SQLDatabase
  • Alla standard-SQL DB:er (master, modell, msdb) under sql-server-1 – skyddsbar objekttyp som SQLDatabase

sql-server-0, sql-server-1 visas också som "AzureVMAppContainer" när säkerhetskopieringscontainrar visas.

Hämta bara den relevanta databasen för att aktivera säkerhetskopiering och powershell-cmdletar på begäran är identiska.