Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak pomocí Azure PowerShellu zálohovat a obnovit databázi SQL na virtuálním počítači Azure pomocí služby Azure Backup v trezoru služby Recovery Services.
Požadavky
Před zálohováním a obnovením databází SQL na virtuálních počítačích Azure pomocí PowerShellu se ujistěte, že jsou splněné následující požadavky:
- Zkontrolujte funkce pro zálohování databází SQL v rámci virtuálních počítačů Azure.
- Projděte si hierarchii objektů PowerShellu pro Recovery Services.
Hierarchie objektů služby Recovery Services
Hierarchie objektů je shrnuta v následujícím diagramu.
Projděte si referenční informace k cmdletům Az.RecoveryServices v knihovně Azure.
Nastavení a instalace PowerShellu pro Azure Backup
Následujícím způsobem nastavte PowerShell:
Stáhněte si nejnovější verzi Az PowerShellu. Minimální požadovaná verze je 1.5.0.
Pomocí tohoto příkazu vyhledejte rutiny Azure Backup PowerShellu:
Get-Command *azrecoveryservices*Projděte si aliasy a cmdlety pro Azure Backup a trezor služby Recovery Services. Tady je příklad toho, co se může zobrazit. Nejedná se o úplný seznam cmdletů.
Přihlaste se ke svému účtu Azure pomocí Connect-AzAccount.
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 přihlašovací údaje svého účtu zahrnout jako parametr do rutiny Connect-AzAccount 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 Connect-AzAccount -Tenant fabrikam.com.
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 $SubscriptionNamePokud 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"Ověřte, že poskytovatelé úspěšně zaregistrovali:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"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 a nastavení kontextu trezoru
Pokud chcete nastavit zálohování databází SQL na virtuálních počítačích Azure, musíte nejprve vytvořit trezor služby Recovery Services a nastavit kontext trezoru.
Vytvoření trezoru služby Recovery Services
Provedením těchto kroků vytvoříte trezor 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ů.
Trezor se umístí do skupiny prostředků. Pokud nemáte již vytvořenou skupinu prostředků, vytvořte novou pomocí 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"K vytvoření trezoru použijte rutinu New-AzRecoveryServicesVault . Zadejte stejné umístění trezoru, jaké bylo použito pro skupinu prostředků.
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"Zadejte typ redundance pro úložiště trezoru, který chcete použít.
- Můžete použít místně redundantní úložiště, geograficky redundantní úložiště nebo zónově redundantní úložiště .
- Následující příklad nastaví možnost
-BackupStorageRedundancypro cmdlet Set-AzRecoveryServicesBackupProperty , kdytestvaultje nastaveno naGeoRedundant.
$vault1 = Get-AzRecoveryServicesVault -Name "testvault" Set-AzRecoveryServicesBackupProperties -Vault $vault1 -BackupStorageRedundancy GeoRedundant
Zobrazit trezory v předplatném
Pokud chcete zobrazit všechny trezory v předplatném, použijte Get-AzRecoveryServicesVault.
Get-AzRecoveryServicesVault
Výstup je podobný následujícímu. Poskytnuta 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
Nastavte kontext 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 bude platit pro všechny následné cmdlety.
Následující příklad nastaví kontext trezoru pro testvault
Get-AzRecoveryServicesVault -Name "testvault" | Set-AzRecoveryServicesVaultContext
Získat 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í pro databáze SQL
Zásady zálohování určují plán zálohování a dobu uchovávání bodů obnovení záloh:
- Zásady zálohování jsou přidružené alespoň k jedné zásadě uchovávání informací. Zásady uchovávání informací definují, jak dlouho se bod obnovení uchovává před odstraněním.
- Zobrazte výchozí zásadu uchovávání zálohování pomocí Get-AzRecoveryServicesBackupRetentionPolicyObject.
- Zobrazte výchozí plán zásad zálohování pomocí Get-AzRecoveryServicesBackupSchedulePolicyObject.
- K vytvoření nové zásady zálohování použijete rutinu New-AzRecoveryServicesBackupProtectionPolicy . Zadáte objekty rozvrhu a zásad uchovávání.
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 v násobcích 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 provádí denní „Úplnou“ zálohu, uchovává ji po dobu 180 dnů a každé 2 hodiny provádí zálohu 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
Povolení zálohování pro databáze SQL
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 PowerShellu 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číst databáze 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 ke získání 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čtení 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 pro budoucí databáze SQL
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
Jakmile je záměr automatické ochrany zadán, proběhne dotaz na systém, který načte nově přidané databáze, a to jako naplánovaná úloha na pozadí každých 8 hodin.
Obnovení databází SQL na virtuálních počítačích Azure
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 vhodnou úplnou, rozdílovou zálohu a řetězec záloh protokolu potřebný k obnovení na základě vybraného času.
- Obnovte konkrétní úplnou nebo rozdílovou zálohu pro dosažení určitého bodu obnovy.
Před obnovením databází SQL zkontrolujte požadavky uvedené tady .
Varování
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čti relevantní čas obnovení
Jak je uvedeno výše, můžete zálohovanou databázi SQL obnovit do úplné nebo rozdílové kopie NEBO k určitému okamžiku v protokolu.
Načíst jedinečné body 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"
Získat bod obnovy v určitém čase
Pokud chcete databázi obnovit k určitému bodu v čase, použijte příkaz PowerShellu Get-AzRecoveryServicesBackupRecoveryLogChain. Cmdlet vrátí seznam dat, která představují počáteční a ukončující časy nepřerušeného, souvislého řetězu protokolů pro SQL zálohovanou položku. 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:
Když je pro obnovení vybraný protokolový bod v čase, nemusíte zadávat výchozí bod, tedy úplnou zálohu, z níž 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 s využitím dat 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 bod po bodu v čase
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -OriginalWorkloadRestore -VaultId $testVault.ID
Obnovení alternativních úloh
Důležité
Zálohovanou databázi SQL je možné obnovit pouze jako novou databázi 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 časového bodu 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í souborů s protokolem k určitému okamžiku z určené úplné zálohy
Pokud chcete zadat konkrétní věc, kterou byste měli 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í zatížení se obnovuje do úložiště v sekundární lokalitě.
Důležité
Podpora obnovení sekundární oblasti pro SQL z PowerShellu je dostupná z Az 6.0.0.
Pokud jste povolili obnovení napříč oblastmi, body obnovení se budou replikovat i do sekundární, spárované oblasti. Potom můžete tyto body obnovení načíst a spustit obnovení do počítače, který se nachází 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í regionu. 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ě pá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 vyhledáme příslušný trezor, který je v sekundárním regionu, a pak získáme registrované kontejnery v něm.
$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í protokolu k určitému bodu v čase 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.
Obnovit s příslušným nastavením
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áloha je považována za nadřazenou následným zálohám protokolů, a proto je její uchovávání svázáno s uchováváním protokolů v politice uchovávání. Proto je zákazníkem poskytnutý čas vypršení platnosti dodržen pro zálohy typu copy-only-full, a nikoliv pro standardní úplné zálohy. Doba úplného uchovávání záloh se nastaví automaticky po dobu 45 dnů od aktuálního času. Je to také zdokumentováno.
$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
Varování
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, získejte příslušný kontejner záloh 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, přidejte příznak -RemoveRecoveryPoints k příkazu 'disable' ochrany.
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. Pouze tehdy můžete databáze chránit v jiném trezoru. Použijte rutinu PowerShell Unregister-AzRecoveryServicesBackupContainer k odregistrování SQL virtuálního počítače.
$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živatelem pomocí ID úlohy, které se vrátí ve výstupu z asynchronních úloh, jako je zálohování. Pro sledování úlohy a jejích 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 pod SQL AG budou uvedeny 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 zaregistrovány, pokud vypíšete položky k ochraně, 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ánitelné položky jako 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 a sql-server-1 budou také uvedeny jako "AzureVMAppContainer", když jsou uvedeny kontejnery zálohování.
Stačí načíst příslušnou databázi, aby bylo možné povolit zálohování a zálohování na vyžádání, a obnovení rutin PowerShellu jsou totožné.