Sdílet prostřednictvím


Zálohování a obnovení databází SQL na virtuálních počítačích Azure pomocí PowerShellu

Tento článek popisuje, jak pomocí Azure PowerShellu zálohovat a obnovit databázi SQL na virtuálním počítači Azure pomocí trezoru služby Azure Backup Recovery Services.

Tento článek vysvětluje následující postupy:

  • Nastavte PowerShell a zaregistrujte zprostředkovatele služby Azure Recovery Services.
  • Vytvořte trezor služby Recovery Services.
  • Konfigurace zálohování pro DATABÁZI SQL v rámci virtuálního počítače Azure
  • Spusťte úlohu zálohování.
  • Obnovení zálohované databáze SQL
  • Monitorování úloh zálohování a obnovení

Než začnete

Hierarchie objektů služby Recovery Services

Hierarchie objektů je shrnuta v následujícím diagramu.

Recovery Services object hierarchy

Projděte si referenční informace k rutinám Az.RecoveryServicesv knihovně Azure.

Nastavení a instalace

Následujícím způsobem nastavte PowerShell:

  1. Stáhněte si nejnovější verzi Az PowerShellu. Minimální požadovaná verze je 1.5.0.

  2. Pomocí tohoto příkazu vyhledejte rutiny Azure Backup PowerShellu:

    Get-Command *azrecoveryservices*
    
  3. Projděte si aliasy a rutiny pro Azure Backup a trezor služby Recovery Services. Tady je příklad toho, co se může zobrazit. Nejedná se o úplný seznam rutin.

    List of Recovery Services cmdlets

  4. Přihlaste se ke svému účtu Azure pomocí Připojení-AzAccount.

  5. Na zobrazené webové stránce se zobrazí výzva k zadání přihlašovacích údajů k vašemu účtu.

    • Případně můžete do rutiny Připojení-AzAccount s parametrem zahrnout přihlašovací údaje svého účtu s parametrem -Credential.
    • Pokud jste partner CSP, který pracuje pro tenanta, zadejte zákazníka jako tenanta pomocí jeho ID tenanta nebo primárního názvu domény tenanta. Příkladem je Připojení-AzAccount -tenant fabrikam.com.
  6. Přidružte předplatné, které chcete použít k účtu, protože účet může mít několik předplatných.

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  7. Pokud službu Azure Backup používáte poprvé, pomocí rutiny Register-AzResourceProvider zaregistrujte poskytovatele služby Azure Recovery Services ve vašem předplatném.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  8. Ověřte, že poskytovatelé úspěšně zaregistrovali:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  9. Ve výstupu příkazu ověřte, že se stav RegistrationState změní na Registrované. Pokud ne, spusťte znovu rutinu Register-AzResourceProvider .

Vytvoření trezoru služby Recovery Services

Pomocí těchto kroků vytvořte trezor služby Recovery Services.

Trezor služby Recovery Services je prostředek Resource Manageru, takže ho musíte umístit do skupiny prostředků. Můžete použít existující skupinu prostředků nebo můžete vytvořit skupinu prostředků pomocí rutiny New-AzResourceGroup . Při vytváření skupiny prostředků zadejte název a umístění skupiny prostředků.

  1. Trezor se umístí do skupiny prostředků. Pokud nemáte existující skupinu prostředků, vytvořte novou skupinu pomocí skupiny New-AzResourceGroup. V tomto příkladu vytvoříme novou skupinu prostředků v oblasti USA – západ.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. K vytvoření trezoru použijte rutinu New-AzRecoveryServicesVault . Zadejte stejné umístění trezoru jako pro skupinu prostředků.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Zadejte typ redundance, který se má použít pro úložiště trezoru.

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

Zobrazení trezorů v předplatném

Pokud chcete zobrazit všechny trezory v předplatném, použijte rutinu Get-AzRecoveryServicesVault.

Get-AzRecoveryServicesVault

Výstup je podobný následujícímu. K dispozici je přidružená skupina prostředků a umístění.

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

Nastavení kontextu trezoru

Uložte objekt trezoru do proměnné a nastavte kontext trezoru.

  • Mnoho rutin Azure Backup vyžaduje jako vstup objekt trezoru služby Recovery Services, takže je vhodné uložit objekt trezoru do proměnné.
  • Kontext trezoru představuje typ chráněných dat v trezoru. Nastavte ji pomocí Set-AzRecoveryServicesVaultContext. Po nastavení kontextu se použije pro všechny následné rutiny.

Následující příklad nastaví kontext trezoru pro testvault

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

Načtení ID trezoru

Plánujeme vyřazení nastavení kontextu trezoru v souladu s pokyny Azure PowerShellu. Místo toho můžete uložit nebo načíst ID trezoru a předat ho relevantním příkazům následujícím způsobem:

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

Konfigurace zásad zálohování

Zásady zálohování určují plán zálohování a dobu uchovávání bodů obnovení záloh:

Ve výchozím nastavení je čas zahájení definován v objektu Zásady plánu. Pomocí následujícího příkladu změňte počáteční čas na požadovaný čas zahájení. Požadovaný čas zahájení by měl být také ve standardu UTC. Následující příklad předpokládá, že požadovaný čas spuštění je 01:00 UTC pro denní zálohy.

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

Důležité

Musíte zadat čas zahájení pouze za 30 minut. V předchozím příkladu může být pouze "01:00:00" nebo "02:30:00". Čas zahájení nemůže být 01:15:00.

Následující příklad ukládá zásady plánu a zásady uchovávání informací do proměnných. Tyto proměnné pak použije jako parametry pro novou zásadu (NewSQLPolicy). NewSQLPolicy trvá denní úplné zálohování, uchovává ho po dobu 180 dnů a každých 2 hodiny trvá zálohování protokolů.

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

Výstup je podobný následujícímu.

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

Povolit zálohování

Registrace virtuálního počítače SQL

V případě záloh virtuálních počítačů Azure a sdílených složek Azure se služba Backup může připojit k těmto prostředkům Azure Resource Manageru a načíst relevantní podrobnosti. Vzhledem k tomu, že SQL je aplikace na virtuálním počítači Azure, služba Backup potřebuje oprávnění pro přístup k aplikaci a načíst potřebné podrobnosti. Abyste to mohli udělat, musíte "zaregistrovat" virtuální počítač Azure, který obsahuje aplikaci SQL s trezorem služby Recovery Services. Jakmile zaregistrujete virtuální počítač SQL s trezorem, můžete databáze SQL chránit pouze do daného trezoru. K registraci virtuálního počítače použijte rutinu Prostředí PowerShell Register-AzRecoveryServicesBackupContainer .

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

Příkaz vrátí záložní kontejner tohoto prostředku a stav se zaregistruje.

Poznámka:

Pokud parametr force není zadaný, zobrazí se výzva k potvrzení s textem "Chcete zakázat ochranu pro tento kontejner". Tento text prosím ignorujte a potvrďte to tak, že řeknete "Y". Jedná se o známý problém a pracujeme na odebrání textu a požadavku na parametr force.

Načítání databází SQL

Po dokončení registrace bude služba Backup moct vypsat všechny dostupné komponenty SQL na virtuálním počítači. Pokud chcete zobrazit všechny komponenty SQL, které se ještě mají zálohovat do tohoto trezoru, použijte rutinu PowerShellu Get-AzRecoveryServicesBackupProtectableItem .

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

Výstup zobrazí všechny nechráněné komponenty SQL ve všech virtuálních počítačích SQL zaregistrovaných v tomto trezoru s typem položky a názvem serveru. Na konkrétní virtuální počítač SQL můžete dále filtrovat předáním parametru -Container nebo použitím kombinace Name a ServerName spolu s příznakem ItemType k doručení jedinečné položky SQL.

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

Konfigurace zálohování

Teď, když máme požadovanou databázi SQL a zásady, se kterými je potřeba zálohovat, můžeme ke konfiguraci zálohování pro tuto databázi SQL použít rutinu Enable-AzRecoveryServicesBackupProtection .

Enable-AzRecoveryServicesBackupProtection -ProtectableItem $SQLDB -Policy $NewSQLPolicy

Příkaz počká, až se konfigurace zálohování dokončí, a vrátí následující výstup.

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

Načítání nových databází SQL

Po registraci počítače služba Backup načte podrobnosti o dostupných databázích. Pokud se databáze SQL nebo instance SQL později přidají do registrovaného počítače, musíte ručně aktivovat službu zálohování, aby se znovu získaly všechny nechráněné databáze (včetně nově přidaných databází). K provedení nového dotazu použijte rutinu PowerShellu Initialize-AzRecoveryServicesBackupItem na virtuálním počítači SQL. Příkaz počká, dokud se operace nedokončí. Později pomocí rutiny PowerShellu Get-AzRecoveryServicesBackupProtectableItem získáte seznam nejnovějších nechráněných komponent SQL.

$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

Jakmile se načte příslušné chráněné položky, povolte zálohy podle pokynů v předchozí části. Pokud nechcete ručně zjišťovat nové databáze, můžou se rozhodnout pro automatickou ochranu, jak je vysvětleno níže.

Povolení automatické ochrany

Zálohování můžete nakonfigurovat tak, aby se všechny databáze přidané v budoucnu automaticky chránily pomocí určitých zásad. Pokud chcete povolit automatickou ochranu, použijte rutinu PowerShellu Enable-AzRecoveryServicesBackupAutoProtection .

Vzhledem k tomu, že instrukce slouží k zálohování všech budoucích databází, operace se provádí na úrovni instance SQL.

$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

Po zadání záměru automatické ochrany proběhne dotaz na počítač, který načte nově přidané databáze, jako naplánovanou úlohu na pozadí každých 8 hodin.

Obnovení databází SQL

Azure Backup může obnovit databáze SQL Serveru spuštěné na virtuálních počítačích Azure následujícím způsobem:

  • Obnovení na konkrétní datum nebo čas (do sekundy) pomocí záloh transakčních protokolů. Azure Backup automaticky určuje odpovídající úplné rozdílové zálohování a řetěz záloh protokolů, které jsou potřeba k obnovení na základě vybraného času.
  • Obnovení konkrétní úplné nebo rozdílové zálohy pro obnovení do konkrétního bodu obnovení.

Před obnovením databází SQL zkontrolujte požadavky uvedené tady .

Upozorňující

Kvůli problému se zabezpečením souvisejícím s RBAC jsme museli prostřednictvím PowerShellu zavést zásadní změnu příkazů pro obnovení pro SQL DB. Proveďte upgrade na verzi Az 6.0.0 nebo vyšší, abyste mohli odesílat správné příkazy pro obnovení prostřednictvím PowerShellu. Nejnovější příkazy PS jsou k dispozici níže.

Nejprve načtěte relevantní zálohovanou databázi SQL pomocí rutiny PowerShellu Get-AzRecoveryServicesBackupItem .

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

Načtení relevantního času obnovení

Jak je uvedeno výše, můžete zálohovanou databázi SQL obnovit do úplné nebo rozdílové kopie NEBO do bodu v čase protokolu.

Načtení jedinečných bodů obnovení

Pomocí rutiny Get-AzRecoveryServicesBackupRecoveryPoint můžete načíst jedinečné body obnovení (úplné nebo rozdílové) pro zálohovanou databázi SQL.

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

Výstup je podobný následujícímu příkladu.

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

K načtení příslušného bodu obnovení použijte filtr RecoveryPointId nebo maticový filtr.

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

Načtení bodu obnovení k určitému bodu v čase

Pokud chcete databázi obnovit k určitému bodu v čase, použijte rutinu PowerShellu Get-AzRecoveryServicesBackupRecoveryLogChain . Rutina vrátí seznam kalendářních dat, která představují počáteční a koncové časy nepřerušeného řetězu protokolů pro tuto zálohovanou položku SQL. Požadovaný bod v čase by měl být v tomto rozsahu.

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

Výstup bude podobný následujícímu příkladu.

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

Výše uvedený výstup znamená, že můžete provést obnovení k jakémukoli bodu v čase mezi zobrazeným počátečním a koncovým časem. Časy jsou ve standardu UTC. V PowerShellu vytvořte jakýkoli bod v čase, který je v rozsahu uvedeném výše.

Poznámka:

Pokud je pro obnovení vybraný bod v čase protokolu, nemusíte zadávat výchozí bod, tj. úplné zálohování, ze kterého se databáze obnoví. Služba Azure Backup se postará o celý plán obnovení, tedy o to, které úplné zálohování zvolit, jaké zálohy protokolů se mají použít atd.

Určení konfigurace obnovení

Pro obnovení databáze SQL se podporují následující scénáře obnovení.

  • Přepsání zálohované databáze SQL daty z jiného bodu obnovení – OriginalWorkloadRestore
  • Obnovení databáze SQL jako nové databáze ve stejné instanci SQL – AlternateWorkloadRestore
  • Obnovení databáze SQL jako nové databáze v jiné instanci SQL na jiném virtuálním počítači SQL – AlternateWorkloadRestore
  • Obnovení databáze SQL jako .bak souborů –RestoreAsFiles

Po načtení příslušného bodu obnovení (jedinečného bodu v čase nebo protokolu) použijte rutinu PowerShellu Get-AzRecoveryServicesBackupWorkloadRecoveryConfig k načtení objektu konfigurace obnovení podle požadovaného plánu obnovení.

Obnovení původní úlohy

Pokud chcete přepsat zálohovanou databázi daty z bodu obnovení, stačí zadat správný příznak a příslušný bod obnovení, jak je znázorněno v následujících příkladech.

Původní obnovení s odlišným bodem obnovení
$OverwriteWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -OriginalWorkloadRestore -VaultId $testVault.ID
Původní obnovení s protokolem k určitému bodu v čase
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem  -OriginalWorkloadRestore -VaultId $testVault.ID

Alternativní obnovení úloh

Důležité

Zálohované databáze SQL je možné obnovit jako novou databázi pouze do jiné instance SQLInstance, a to pouze na virtuálním počítači Azure zaregistrovaného v tomto trezoru.

Jak je uvedeno výše, pokud cílová instance SQLInstance spadá do jiného virtuálního počítače Azure, ujistěte se, že je zaregistrovaná v tomto trezoru , a příslušná instance SQLInstance se zobrazí jako chráněná položka. V tomto dokumentu předpokládejme, že cílový název SQLInstance je MSSQLSERVER v jiném virtuálním počítači 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

Pak stačí předat příslušný bod obnovení, cílovou instanci SQL se správným příznakem, jak je znázorněno níže, a cílový kontejner, pod kterým existuje cílová instance SQL.

Alternativní obnovení s odlišným bodem obnovení
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Alternativní obnovení s využitím bodu v čase protokolu
$AnotherInstanceWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Obnovit jako soubory

Pokud chcete zálohovaná data obnovit jako .bak soubory místo databáze, zvolte možnost Obnovit jako soubory . Zálohovanou databázi SQL je možné obnovit do libovolného cílového virtuálního počítače, který je zaregistrovaný v tomto trezoru.

$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
Obnovení jako souborů s odlišným bodem obnovení
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Obnovení jako souborů s nejnovějším úplným datem protokolu
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Obnovení jako souborů s protokolem k určitému úplnému bodu v čase

Pokud chcete poskytnout konkrétní úplný název, který se má použít k obnovení, použijte následující příkaz:

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

Poslední objekt konfigurace bodu obnovení získaný z rutiny PowerShellu Get-AzRecoveryServicesBackupWorkloadRecoveryConfig obsahuje všechny relevantní informace pro obnovení a je znázorněno níže.

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

Obnovený název databáze, pole OverwriteWLIfpresent, NoRecoveryMode a targetPhysicalPath můžete upravit. Získejte další podrobnosti o cílových cestách k souborům, jak je znázorněno níže.

$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

Nastavte relevantní vlastnosti PowerShellu jako řetězcové hodnoty, jak je znázorněno níže.

$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

Důležité

Ujistěte se, že konečný konfigurační objekt obnovení má všechny potřebné a správné hodnoty, protože operace obnovení bude založená na objektu konfigurace.

Poznámka:

Pokud nechcete obnovit celý řetězec, ale jenom podmnožinu souborů, postupujte podle zde uvedených kroků.

Alternativní obnovení úloh do trezoru v sekundární oblasti

Důležité

Podpora obnovení sekundární oblasti pro SQL z PowerShellu je dostupná z Az 6.0.0.

Pokud jste povolili obnovení mezi oblastmi, body obnovení se budou replikovat i do sekundární spárované oblasti. Potom můžete tyto body obnovení načíst a aktivovat obnovení do počítače, který je v dané spárované oblasti. Stejně jako u normálního obnovení by se cílový počítač měl zaregistrovat do cílového trezoru v sekundární oblasti. Následující posloupnost kroků by měla objasnit komplexní proces.

  • Načtení zálohovaných položek replikovaných do sekundární oblasti
  • Pro takovou položku načtěte body obnovení (jedinečné a/nebo protokoly), které se replikují do sekundární oblasti.
  • Pak zvolte cílový server zaregistrovaný v trezoru v sekundární spárované oblasti.
  • Aktivujte obnovení na tento server a sledujte ho pomocí ID úlohy.

Načtení zálohovaných položek ze sekundární oblasti

Načtěte všechny zálohované položky SQL ze sekundární oblasti obvyklým příkazem, ale s dodatečným parametrem, který indikuje, že by se tyto položky měly načíst ze sekundární oblasti.

$secondaryBkpItems = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload  -WorkloadType MSSQL  -VaultId $testVault.ID -UseSecondaryRegion
Načtení jedinečných bodů obnovení ze sekundární oblasti

Pomocí rutiny Get-AzRecoveryServicesBackupRecoveryPoint načtěte jedinečné body obnovení (full/rozdílové) pro zálohovanou databázi SQL a přidejte parametr, který označuje, že se jedná o body obnovení načtené ze sekundární oblasti.

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

Výstup je podobný následujícímu příkladu.

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

K načtení příslušného bodu obnovení použijte filtr RecoveryPointId nebo maticový filtr.

$FullRPFromSec = Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -RecoveryPointId "6660368097802" -UseSecondaryRegion
Načtení bodů obnovení protokolu ze sekundární oblasti

Použijte rutinu PowerShellu Get-AzRecoveryServicesBackupRecoveryLogChain s parametrem -UseSecondaryRegion, který vrátí počáteční a koncové časy nepřerušeného řetězu protokolů pro tuto zálohovanou položku SQL ze sekundární oblasti. Požadovaný bod v čase by měl být v tomto rozsahu.

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

Výstup bude podobný následujícímu příkladu.

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

Výše uvedený výstup znamená, že můžete provést obnovení k jakémukoli bodu v čase mezi zobrazeným počátečním a koncovým časem. Časy jsou ve standardu UTC. V PowerShellu vytvořte jakýkoli bod v čase, který je v rozsahu uvedeném výše.

Načtení cílového serveru ze sekundární oblasti

Ze sekundární oblasti potřebujeme trezor a cílový server zaregistrovaný do daného trezoru. Jakmile máme cílový kontejner sekundární oblasti a instanci SQL, můžeme existující rutiny znovu použít k vygenerování konfigurace úlohy obnovení. V tomto dokumentu předpokládejme, že název virtuálního počítače je "secondaryVM" a název instance v tomto virtuálním počítači je MSSQLInstance.

Nejprve načteme příslušný trezor, který je v sekundární oblasti, a pak získáme registrované kontejnery v tomto trezoru.

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

Po zvolení registrovaného kontejneru pak načteme instance SQL v rámci kontejneru, do kterého se má databáze obnovit. Tady předpokládáme, že v sekundárním virtuálním počítači existuje 1 instance SQL a načteme ji.

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

Příprava konfigurace obnovení

Jak je uvedeno výše pro normální obnovení SQL, stejný příkaz lze znovu použít k vygenerování příslušné konfigurace obnovení.

Úplné obnovení ze sekundární oblasti
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
Obnovení k určitému bodu v čase protokolu ze sekundární oblasti
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $secondaryBkpItems[0] -TargetItem $secSQLInstance  -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer

Jakmile se příslušná konfigurace získá pro obnovení primární oblasti nebo obnovení sekundární oblasti, můžete stejný příkaz obnovení použít k aktivaci obnovení a pozdějšímu sledování pomocí identifikátorů jobID.

Obnovení s příslušnou konfigurací

Jakmile se příslušný objekt konfigurace obnovení získá a ověří, spusťte proces obnovení pomocí rutiny PowerShellu Restore-AzRecoveryServicesBackupItem .

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

Operace obnovení vrátí úlohu, která se má sledovat.

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

Správa záloh SQL

Zálohování na vyžádání

Po povolení zálohování pro databázi můžete také aktivovat zálohu na vyžádání pro databázi pomocí rutiny PowerShellu Backup-AzRecoveryServicesBackupItem . Následující příklad aktivuje úplné zálohování jen pro kopírování v databázi SQL s povolenou kompresí a úplné zálohování jen pro kopírování by mělo být zachováno po dobu 60 dnů.

Poznámka:

Úplné zálohy jen pro kopírování jsou ideální pro dlouhodobé uchovávání, protože nemají žádné závislosti na jiných typech zálohování, jako jsou protokoly. Úplné zálohování je považováno za nadřazené položky následných záloh protokolů, a proto je uchovávání svázané s uchováváním protokolů v zásadách. Proto se zákazníkem poskytnutý čas vypršení platnosti je dodržen pro úplné zálohy jen pro kopírování, a ne pro úplné zálohy. Doba úplného uchovávání záloh se nastaví automaticky po dobu 45 dnů od aktuálního času. Je zde také zdokumentovaný.

$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

Příkaz zálohování na vyžádání vrátí úlohu, která se má sledovat.

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

Pokud dojde ke ztrátě výstupu nebo pokud chcete získat příslušné ID úlohy, získejte seznam úloh ze služby Azure Backup a pak ho sledujte a jeho podrobnosti.

Změna zásad pro zálohované položky

Můžete změnit zásadu zálohované položky z Policy1 na Policy2. Pokud chcete přepnout zásady zálohované položky, načtěte příslušné zásady a zálohujte položku a jako parametr použijte příkaz Enable-AzRecoveryServices se zálohovanou položkou.

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

Příkaz počká, až se konfigurace zálohování dokončí, a vrátí následující výstup.

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

Úprava existujících zásad zálohování

Pokud chcete upravit existující zásadu , použijte příkaz Set-AzRecoveryServicesBackupProtectionPolicy .

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

Po nějaké době zkontrolujte úlohy zálohování a sledujte případné chyby. Pokud k tomu dojde, musíte tyto problémy vyřešit. Pak znovu spusťte příkaz upravit zásadu s parametrem FixForInconsistentItems a zkuste znovu upravit zásadu u všech zálohovaných položek, pro které operace dříve selhala.

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -FixForInconsistentItems

Opětovná registrace virtuálních počítačů SQL

Upozorňující

Než se pokusíte o opětovnou registraci, nezapomeňte si přečíst tento dokument , abyste porozuměli příznakům selhání a příčinám.

Pokud chcete aktivovat opětovnou registraci virtuálního počítače SQL, načtěte příslušný kontejner zálohování a předejte ho do rutiny pro registraci.

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

Zastavení ochrany

Zachování dat

Pokud chcete ochranu zastavit, můžete použít rutinu PowerShellu Disable-AzRecoveryServicesBackupProtection . Tím se zastaví naplánované zálohování, ale data zálohovaná až do té doby zůstanou navždy zachována.

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

Odstranění zálohovaných dat

Abyste mohli uložená zálohovaná data v trezoru úplně odebrat, stačí přidat příznak -RemoveRecoveryPoints nebo přepnout do příkazu ochrany disable.

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

Zakázání automatické ochrany

Pokud byla v instance SQLInstance nakonfigurovaná automatická ochrana, můžete ji zakázat pomocí rutiny PowerShellu Disable-AzRecoveryServicesBackupAutoProtection .

Pomocí následujícího příkazu PowerShellu vyhledejte instance, ve kterých je povolená automatická ochrana.

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

Pak vyberte příslušný název chráněné položky a název serveru z výstupu a zakažte automatickou ochranu těchto instancí.

$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

Zrušení registrace virtuálního počítače SQL

Pokud už nejsou chráněné všechny databáze SQL Serveru a neexistují žádná zálohovaná data, můžete zrušit registraci virtuálního počítače SQL z tohoto trezoru. Databáze pak můžete chránit pouze do jiného trezoru. K zrušení registrace virtuálního počítače SQL použijte rutinu Unregister-AzRecoveryServicesBackupContainer PowerShell.

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

Sledování úloh Azure Backup

Je důležité si uvědomit, že Azure Backup sleduje pouze úlohy aktivované uživatelem v zálohování SQL. Naplánované zálohování (včetně záloh protokolů) se na portálu ani v PowerShellu nezobrazují. Pokud ale nějaké naplánované úlohy selžou, vygeneruje se upozornění zálohování a zobrazí se na portálu. Pomocí služby Azure Monitor můžete sledovat všechny naplánované úlohy a další důležité informace.

Uživatelé můžou sledovat operace aktivované na vyžádání nebo uživatele pomocí ID úlohy, která se vrátí ve výstupu asynchronních úloh, jako je zálohování. Ke sledování úlohy a podrobností použijte rutinu PowerShellu Get-AzRecoveryServicesBackupJobDetail .

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

K získání seznamu úloh na vyžádání a jejich stavů ze služby Azure Backup použijte rutinu PowerShellu Get-AzRecoveryServicesBackupJob . Následující příklad vrátí všechny probíhající úlohy SQL.

Get-AzRecoveryServicesBackupJob -Status InProgress -BackupManagementType AzureWorkload

Pokud chcete zrušit probíhající úlohu, použijte rutinu PowerShellu Stop-AzRecoveryServicesBackupJob .

Správa skupin dostupnosti AlwaysOn SQL

V případě skupin dostupnosti AlwaysOn SQL nezapomeňte zaregistrovat všechny uzly skupiny dostupnosti (AG). Po dokončení registrace pro všechny uzly se objekt skupiny dostupnosti SQL logicky vytvoří v rámci chránitelných položek. Databáze v rámci skupiny dostupnosti SQL budou uvedené jako SQLDatabase. Uzly se zobrazí jako samostatné instance a výchozí databáze SQL pod nimi budou uvedené také jako databáze SQL.

Předpokládejme například, že skupina dostupnosti SQL má dva uzly: sql-server-0 a sql-server-1 a 1 databázi skupiny dostupnosti SQL. Jakmile jsou oba tyto uzly zaregistrované, pokud vypíšete chráněné položky, vypíše následující komponenty.

  • Objekt skupiny dostupnosti SQL – chránitelný typ položky jako SQLAvailabilityGroup
  • Databáze skupiny dostupnosti SQL – chránitelný typ položky jako SQLDatabase
  • sql-server-0 – typ chráněné položky jako instance SQLInstance
  • sql-server-1 – typ chráněné položky jako instance SQLInstance
  • Všechny výchozí databáze SQL (hlavní databáze, model, msdb) v sql-server-0 – typ chráněné položky jako SQLDatabase
  • Všechny výchozí databáze SQL (hlavní databáze, model, msdb) v sql-server-1 – typ chráněné položky jako SQLDatabase

Sql-server-0, sql-server-1 se při uvedení kontejnerů zálohování zobrazí také jako AzureVMAppContainer.

Stačí načíst příslušnou databázi, aby bylo možné povolit zálohování a obnovení rutin PowerShellu na vyžádání.