Tworzenie kopii zapasowych i przywracanie baz danych SQL na maszynach wirtualnych platformy Azure przy użyciu programu PowerShell
W tym artykule opisano, jak używać programu Azure PowerShell do tworzenia kopii zapasowych i odzyskiwania bazy danych SQL na maszynie wirtualnej platformy Azure przy użyciu magazynu usługi Azure Backup Recovery Services.
W tym artykule opisano sposób wykonywania następujących czynności:
- Skonfiguruj program PowerShell i zarejestruj dostawcę usług Azure Recovery Services.
- Utwórz magazyn usługi Recovery Services.
- Konfigurowanie kopii zapasowej bazy danych SQL na maszynie wirtualnej platformy Azure.
- Uruchom zadanie tworzenia kopii zapasowej.
- Przywracanie kopii zapasowej bazy danych SQL.
- Monitorowanie zadań tworzenia kopii zapasowych i przywracania.
Przed rozpoczęciem
- Dowiedz się więcej o magazynach usługi Recovery Services.
- Przeczytaj o funkcjach tworzenia kopii zapasowych baz danych SQL na maszynach wirtualnych platformy Azure.
- Przejrzyj hierarchię obiektów programu PowerShell dla usług Recovery Services.
Hierarchia obiektów usługi Recovery Services
Hierarchia obiektów jest podsumowana na poniższym diagramie.
Zapoznaj się z dokumentacją poleceń cmdlet az.RecoveryServices w bibliotece platformy Azure.
Konfigurowanie i instalowanie
Skonfiguruj program PowerShell w następujący sposób:
Pobierz najnowszą wersję modułu Az programu PowerShell. Wymagana minimalna wersja to 1.5.0.
Znajdź polecenia cmdlet programu PowerShell usługi Azure Backup za pomocą następującego polecenia:
Get-Command *azrecoveryservices*
Przejrzyj aliasy i polecenia cmdlet dla usługi Azure Backup i magazynu usługi Recovery Services. Oto przykład tego, co można zobaczyć. Nie jest to pełna lista poleceń cmdlet.
Zaloguj się do konta platformy Azure przy użyciu polecenia Connect-AzAccount.
Na wyświetlonej stronie internetowej zostanie wyświetlony monit o wprowadzenie poświadczeń konta.
- Alternatywnie możesz dołączyć poświadczenia konta jako parametr w poleceniu cmdlet Connect-AzAccount z parametrem -Credential.
- Jeśli jesteś partnerem CSP pracującym dla dzierżawy, określ klienta jako dzierżawę, używając identyfikatora dzierżawy lub podstawowej nazwy domeny dzierżawy. Przykładem jest fabrikam.com Connect-AzAccount -Tenant .
Skojarz subskrypcję, której chcesz używać z kontem, ponieważ konto może mieć kilka subskrypcji.
Select-AzSubscription -SubscriptionName $SubscriptionName
Jeśli używasz usługi Azure Backup po raz pierwszy, użyj polecenia cmdlet Register-AzResourceProvider , aby zarejestrować dostawcę usług Azure Recovery Services w ramach subskrypcji.
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
Sprawdź, czy dostawcy zarejestrowali się pomyślnie:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
W danych wyjściowych polecenia sprawdź, czy wartość RegistrationState zmieni się na Zarejestrowano. Jeśli tak nie jest, uruchom ponownie polecenie cmdlet Register-AzResourceProvider .
Tworzenie magazynu usługi Recovery Services
Wykonaj następujące kroki, aby utworzyć magazyn usługi Recovery Services.
Magazyn usługi Recovery Services jest zasobem usługi Resource Manager, dlatego należy umieścić go w grupie zasobów. Możesz użyć istniejącej grupy zasobów lub utworzyć grupę zasobów za pomocą polecenia cmdlet New-AzResourceGroup . Podczas tworzenia grupy zasobów określ nazwę i lokalizację grupy zasobów.
Magazyn jest umieszczany w grupie zasobów. Jeśli nie masz istniejącej grupy zasobów, utwórz nową grupę za pomocą polecenia New-AzResourceGroup. W tym przykładzie utworzymy nową grupę zasobów w regionie Zachodnie stany USA.
New-AzResourceGroup -Name "test-rg" -Location "West US"
Użyj polecenia cmdlet New-AzRecoveryServicesVault , aby utworzyć magazyn. Określ tę samą lokalizację magazynu, która została użyta dla grupy zasobów.
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
Określ typ nadmiarowości do użycia dla magazynu magazynu.
- Możesz użyć magazynu lokalnie nadmiarowego, magazynu geograficznie nadmiarowego lub magazynu strefowo nadmiarowego.
- W poniższym przykładzie ustawiono opcję set-AzRecoveryServicesBackupProperty cmd dla
testvault
parametruGeoRedundant
.-BackupStorageRedundancy
$vault1 = Get-AzRecoveryServicesVault -Name "testvault" Set-AzRecoveryServicesBackupProperties -Vault $vault1 -BackupStorageRedundancy GeoRedundant
Wyświetlanie magazynów w subskrypcji
Aby wyświetlić wszystkie magazyny w subskrypcji, użyj polecenia Get-AzRecoveryServicesVault.
Get-AzRecoveryServicesVault
Dane wyjściowe są podobne do poniższych. Udostępniono skojarzą grupę zasobów i lokalizację.
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
Ustawianie kontekstu magazynu
Zapisz obiekt magazynu w zmiennej i ustaw kontekst magazynu.
- Wiele poleceń cmdlet usługi Azure Backup wymaga obiektu magazynu usługi Recovery Services jako danych wejściowych, więc wygodnie jest przechowywać obiekt magazynu w zmiennej.
- Kontekst magazynu to typ danych chronionych w magazynie. Ustaw go za pomocą polecenia Set-AzRecoveryServicesVaultContext. Po ustawieniu kontekstu ma zastosowanie do wszystkich kolejnych poleceń cmdlet.
Poniższy przykład ustawia kontekst magazynu dla elementu testvault
Get-AzRecoveryServicesVault -Name "testvault" | Set-AzRecoveryServicesVaultContext
Pobieranie identyfikatora magazynu
Planujemy wycofanie ustawienia kontekstu magazynu zgodnie z wytycznymi programu Azure PowerShell. Zamiast tego możesz przechowywać lub pobierać identyfikator magazynu i przekazywać go do odpowiednich poleceń w następujący sposób:
$testVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$testVault.ID
Konfigurowanie zasad kopii zapasowych
Zasady tworzenia kopii zapasowych określają harmonogram tworzenia kopii zapasowych i czas przechowywania punktów odzyskiwania kopii zapasowej:
- Zasady tworzenia kopii zapasowych są skojarzone z co najmniej jedną zasadą przechowywania. Zasady przechowywania określają czas przechowywania punktu odzyskiwania przed jego usunięciem.
- Wyświetl domyślne przechowywanie zasad kopii zapasowych przy użyciu polecenia Get-AzRecoveryServicesBackupRetentionPolicyObject.
- Wyświetl domyślny harmonogram zasad tworzenia kopii zapasowych przy użyciu polecenia Get-AzRecoveryServicesBackupSchedulePolicyObject.
- Aby utworzyć nowe zasady tworzenia kopii zapasowych, użyj polecenia cmdlet New-AzRecoveryServicesBackupProtectionPolicy . Należy wprowadzić obiekty zasad harmonogramu i przechowywania.
Domyślnie czas rozpoczęcia jest definiowany w obiekcie zasad harmonogramu. Użyj poniższego przykładu, aby zmienić godzinę rozpoczęcia na żądany czas rozpoczęcia. Żądany czas rozpoczęcia powinien również znajdować się w formacie UTC. W poniższym przykładzie przyjęto założenie, że żądany czas rozpoczęcia to 01:00 CZASU UTC dla codziennych kopii zapasowych.
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "MSSQL"
$UtcTime = (Get-Date -Date "2019-03-20 01:30:00Z").ToUniversalTime()
$schPol.FullBackupSchedulePolicy.ScheduleRunTimes[0] = $UtcTime
Ważne
Musisz podać czas rozpoczęcia tylko w 30 minutach wielokrotnych. W powyższym przykładzie może to być tylko "01:00:00" lub "02:30:00". Godzina rozpoczęcia nie może być "01:15:00".
W poniższym przykładzie są przechowywane zasady harmonogramu i zasady przechowywania w zmiennych. Następnie używa tych zmiennych jako parametrów dla nowych zasad (NewSQLPolicy). Funkcja NewSQLPolicy wykonuje codzienne "pełne" kopie zapasowe, przechowuje je przez 180 dni i wykonuje kopię zapasową dziennika co 2 godziny
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "MSSQL"
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "MSSQL"
$NewSQLPolicy = New-AzRecoveryServicesBackupProtectionPolicy -Name "NewSQLPolicy" -WorkloadType "MSSQL" -RetentionPolicy $retPol -SchedulePolicy $schPol
Dane wyjściowe są podobne do poniższych.
Name WorkloadType BackupManagementType BackupTime Frequency IsDifferentialBackup IsLogBackupEnabled
Enabled
---- ------------ -------------------- ---------- --------- -------------------- ------------------
NewSQLPolicy MSSQL AzureWorkload 3/15/2019 01:30:00 AM Daily False True
Włącz kopię zapasową
Rejestrowanie maszyny wirtualnej SQL
W przypadku kopii zapasowych maszyn wirtualnych platformy Azure i udziałów plików platformy Azure usługa Backup może połączyć się z tymi zasobami usługi Azure Resource Manager i pobrać odpowiednie szczegóły. Ponieważ usługa SQL jest aplikacją na maszynie wirtualnej platformy Azure, usługa Backup musi mieć uprawnienia dostępu do aplikacji i pobrać niezbędne szczegóły. Aby to zrobić, musisz zarejestrować maszynę wirtualną platformy Azure zawierającą aplikację SQL z magazynem usługi Recovery Services. Po zarejestrowaniu maszyny wirtualnej SQL w magazynie można chronić bazy danych SQL tylko w tym magazynie. Aby zarejestrować maszynę wirtualną, użyj polecenia cmdlet Register-AzRecoveryServicesBackupContainer programu PowerShell.
$myVM = Get-AzVM -ResourceGroupName <VMRG Name> -Name <VMName>
Register-AzRecoveryServicesBackupContainer -ResourceId $myVM.ID -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID -Force
Polecenie zwróci "kontener kopii zapasowej" tego zasobu, a stan będzie "zarejestrowany"
Uwaga
Jeśli parametr force nie zostanie podany, zostanie wyświetlony monit o potwierdzenie przy użyciu tekstu "Czy chcesz wyłączyć ochronę dla tego kontenera". Zignoruj ten tekst i powiedz "Y", aby potwierdzić. Jest to znany problem i pracujemy nad usunięciem tekstu i wymaganiami dotyczącymi parametru force.
Pobieranie baz danych SQL
Po zakończeniu rejestracji usługa Backup będzie mogła wyświetlić listę wszystkich dostępnych składników SQL na maszynie wirtualnej. Aby wyświetlić wszystkie składniki SQL, których kopia zapasowa nie została jeszcze utworzona w tym magazynie, użyj polecenia cmdlet Get-AzRecoveryServicesBackupProtectableItem programu PowerShell
Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -VaultId $testVault.ID
W danych wyjściowych zostaną wyświetlone wszystkie niechronione składniki SQL na wszystkich maszynach wirtualnych SQL zarejestrowanych w tym magazynie z typem elementu i parametrem ServerName. Możesz dalej filtrować do określonej maszyny wirtualnej SQL, przekazując parametr "-Container" lub używając kombinacji parametru "Name" i "ServerName" wraz z flagą ItemType, aby uzyskać unikatowy element SQL.
$SQLDB = Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLDataBase -VaultId $testVault.ID -Name "<Item Name>" -ServerName "<Server Name>"
Konfigurowanie kopii zapasowej
Teraz, gdy mamy wymaganą bazę danych SQL i zasady, dla których należy utworzyć kopię zapasową, możemy użyć polecenia cmdlet Enable-AzRecoveryServicesBackupProtection , aby skonfigurować kopię zapasową dla tej bazy danych SQL.
Enable-AzRecoveryServicesBackupProtection -ProtectableItem $SQLDB -Policy $NewSQLPolicy
Polecenie czeka na ukończenie konfiguracji kopii zapasowej i zwraca następujące dane wyjściowe.
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
Pobieranie nowych baz danych SQL
Po zarejestrowaniu maszyny usługa kopii zapasowej pobierze wówczas szczegóły baz danych. Jeśli bazy danych SQL lub wystąpienia SQL zostaną dodane do zarejestrowanej maszyny później, musisz ręcznie wyzwolić usługę tworzenia kopii zapasowej, aby wykonać nowe "zapytanie", aby ponownie pobrać wszystkie niechronione bazy danych (w tym nowo dodane). Użyj polecenia cmdlet Initialize-AzRecoveryServicesBackupItem PowerShell na maszynie wirtualnej SQL, aby wykonać nowe zapytanie. Polecenie czeka na zakończenie operacji. Później użyj polecenia cmdlet Get-AzRecoveryServicesBackupProtectableItem programu PowerShell, aby uzyskać listę najnowszych niechronionych składników 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
Po pobraniu odpowiednich elementów z możliwością ochrony włącz kopie zapasowe zgodnie z instrukcjami w powyższej sekcji. Jeśli nie chcesz ręcznie wykrywać nowych baz danych, mogą zdecydować się na automatyczną ochronę, jak wyjaśniono poniżej.
Włączanie automatycznego włączania ochrony
Można skonfigurować kopię zapasową, aby wszystkie bazy danych dodane w przyszłości zostały automatycznie chronione przy użyciu określonych zasad. Aby włączyć automatyczne włączanie ochrony, użyj polecenia cmdlet Enable-AzRecoveryServicesBackupAutoProtection programu PowerShell.
Ponieważ instrukcja polega na utworzeniu kopii zapasowej wszystkich przyszłych baz danych, operacja jest wykonywana na poziomie sqlInstance.
$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 podaniu intencji automatycznego włączania ochrony zapytanie dotyczące maszyny w celu pobrania nowo dodanych baz danych odbywa się jako zaplanowane zadanie w tle co 8 godzin.
Przywracanie baz danych SQL
Usługa Azure Backup może przywrócić bazy danych programu SQL Server uruchomione na maszynach wirtualnych platformy Azure w następujący sposób:
- Przywróć do określonej daty lub godziny (do sekundy) przy użyciu kopii zapasowych dziennika transakcji. Usługa Azure Backup automatycznie określa odpowiednią pełną różnicową kopię zapasową i łańcuch kopii zapasowych dziennika, które są wymagane do przywrócenia na podstawie wybranego czasu.
- Przywróć określoną pełną lub różnicową kopię zapasową, aby przywrócić do określonego punktu odzyskiwania.
Przed przywróceniem baz danych SQL sprawdź wymagania wstępne wymienione tutaj .
Ostrzeżenie
Ze względu na problem z zabezpieczeniami związany z kontrolą dostępu opartej na rolach musieliśmy wprowadzić zmianę powodującą niezgodność w poleceniach przywracania dla bazy danych SQL za pośrednictwem programu PowerShell. Przeprowadź uaktualnienie do wersji Az 6.0.0 lub nowszej, aby odpowiednie polecenia przywracania zostały przesłane za pomocą programu PowerShell. Poniżej podano najnowsze polecenia PS.
Najpierw pobierz odpowiednią kopię zapasową bazy danych SQL przy użyciu polecenia cmdlet Get-AzRecoveryServicesBackupItem programu PowerShell.
$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID
Pobieranie odpowiedniego czasu przywracania
Jak opisano powyżej, możesz przywrócić kopię zapasową bazy danych SQL do pełnej/różnicowej kopii LUB do punktu w czasie dziennika.
Pobieranie odrębnych punktów odzyskiwania
Użyj polecenia Get-AzRecoveryServicesBackupRecoveryPoint , aby pobrać odrębne punkty odzyskiwania (pełne/różnicowe) dla kopii zapasowej bazy danych SQL.
$startDate = (Get-Date).AddDays(-7).ToUniversalTime()
$endDate = (Get-Date).ToUniversalTime()
Get-AzRecoveryServicesBackupRecoveryPoint -Item $bkpItem -VaultId $testVault.ID -StartDate $startdate -EndDate $endDate
Dane wyjściowe są podobne do poniższego przykładu
RecoveryPointId RecoveryPointType RecoveryPointTime ItemName BackupManagemen
tType
--------------- ----------------- ----------------- -------- ---------------
6660368097802 Full 3/18/2019 8:09:35 PM MSSQLSERVER;model AzureWorkload
Użyj filtru "RecoveryPointId" lub filtru tablicy, aby pobrać odpowiedni punkt odzyskiwania.
$FullRP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $bkpItem -VaultId $testVault.ID -RecoveryPointId "6660368097802"
Pobieranie punktu w czasie punktu odzyskiwania
Jeśli chcesz przywrócić bazę danych do określonego punktu w czasie, użyj polecenia cmdlet Get-AzRecoveryServicesBackupRecoveryLogChain programu PowerShell. Polecenie cmdlet zwraca listę dat reprezentujących czasy rozpoczęcia i zakończenia nieprzerwanego łańcucha dzienników dla tego elementu kopii zapasowej SQL. Żądany punkt w czasie powinien mieścić się w tym zakresie.
Get-AzRecoveryServicesBackupRecoveryLogChain -Item $bkpItem -VaultId $testVault.ID
Dane wyjściowe będą podobne do poniższego przykładu.
ItemName StartTime EndTime
-------- --------- -------
SQLDataBase;MSSQLSERVER;azu... 3/18/2019 8:09:35 PM 3/19/2019 12:08:32 PM
Powyższe dane wyjściowe oznaczają, że można przywrócić do dowolnego punktu w czasie między wyświetlanym czasem rozpoczęcia a czasem zakończenia. Czasy są w formacie UTC. Skonstruuj dowolny punkt w czasie w programie PowerShell, który znajduje się w zakresie przedstawionym powyżej.
Uwaga
Jeśli do przywracania wybrano punkt w czasie dziennika, nie trzeba określać punktu początkowego, czyli pełnej kopii zapasowej, z której jest przywracana baza danych. Usługa Azure Backup zajmie się całym planem odzyskiwania, czyli pełną kopię zapasową, którą należy wybrać, jakie kopie zapasowe dziennika mają być stosowane itd.
Określanie konfiguracji odzyskiwania
W przypadku przywracania bazy danych SQL obsługiwane są następujące scenariusze przywracania.
- Zastępowanie kopii zapasowej bazy danych SQL danymi z innego punktu odzyskiwania — OriginalWorkloadRestore
- Przywracanie bazy danych SQL jako nowej bazy danych w tym samym wystąpieniu SQL — AlternateWorkloadRestore
- Przywracanie bazy danych SQL jako nowej bazy danych w innym wystąpieniu SQL na innej maszynie wirtualnej SQL — AlternateWorkloadRestore
- Przywracanie bazy danych SQL jako plików .bak -RestoreAsFiles
Po pobraniu odpowiedniego punktu odzyskiwania (odrębnego lub punktu w czasie dziennika) użyj polecenia cmdlet Get-AzRecoveryServicesBackupWorkloadRecoveryConfig programu PowerShell, aby pobrać obiekt konfiguracji odzyskiwania zgodnie z żądanym planem odzyskiwania.
Oryginalne przywracanie obciążenia
Aby zastąpić kopię zapasową bazy danych danymi z punktu odzyskiwania, wystarczy określić właściwą flagę i odpowiedni punkt odzyskiwania, jak pokazano w poniższych przykładach.
Oryginalne przywracanie z odrębnym punktem odzyskiwania
$OverwriteWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -OriginalWorkloadRestore -VaultId $testVault.ID
Oryginalne przywracanie z punktem w czasie dziennika
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -OriginalWorkloadRestore -VaultId $testVault.ID
Przywracanie alternatywnego obciążenia
Ważne
Kopię zapasową bazy danych SQL można przywrócić jako nową bazę danych tylko do innej klasy SQLInstance na maszynie wirtualnej platformy Azure "zarejestrowanej" w tym magazynie.
Jak opisano powyżej, jeśli docelowa klasa SQLInstance znajduje się na innej maszynie wirtualnej platformy Azure, upewnij się, że jest ona zarejestrowana w tym magazynie , a odpowiednia klasa SQLInstance jest widoczna jako element z możliwością ochrony. W tym dokumencie przyjęto założenie, że docelowa nazwa wystąpienia SQL To MSSQLSERVER na innej maszynie wirtualnej "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
Następnie wystarczy przekazać odpowiedni punkt odzyskiwania, docelowe wystąpienie SQL z prawą flagą, jak pokazano poniżej i kontener docelowy, w którym istnieje docelowe wystąpienie SQL.
Alternatywne przywracanie z odrębnym punktem odzyskiwania
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Alternatywne przywracanie z punktem w czasie dziennika
$AnotherInstanceWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Przywracanie jako pliki
Aby przywrócić dane kopii zapasowej jako pliki .bak zamiast bazy danych, wybierz opcję Przywróć jako pliki . Kopię zapasową bazy danych SQL można przywrócić do dowolnej docelowej maszyny wirtualnej zarejestrowanej w tym magazynie.
$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
Przywracanie jako pliki z odrębnym punktem odzyskiwania
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Przywracanie jako plików z punktem w czasie dziennika z najnowszej pełnej wersji
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Przywracanie jako plików z punktem w czasie dziennika z określonej pełnej
Jeśli chcesz nadać pełną, która ma być używana do przywracania, użyj następującego polecenia:
$FileRestoreWithLogAndSpecificFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -FromFull $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Końcowy obiekt konfiguracji punktu odzyskiwania uzyskany z polecenia cmdlet Get-AzRecoveryServicesBackupWorkloadRecoveryConfig programu PowerShell zawiera wszystkie istotne informacje dotyczące przywracania i jest pokazany poniżej.
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
Możesz edytować przywróconą nazwę bazy danych, pola OverwriteWLIfpresent, NoRecoveryMode i targetPhysicalPath. Uzyskaj więcej szczegółów dotyczących ścieżek plików docelowych, jak pokazano poniżej.
$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
Ustaw odpowiednie właściwości programu PowerShell jako wartości ciągu, jak pokazano poniżej.
$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
Ważne
Upewnij się, że końcowy obiekt konfiguracji odzyskiwania ma wszystkie niezbędne i prawidłowe wartości, ponieważ operacja przywracania będzie oparta na obiekcie konfiguracji.
Uwaga
Jeśli nie chcesz przywracać całego łańcucha, ale tylko podzbioru plików, wykonaj kroki opisane tutaj.
Alternatywne przywracanie obciążenia do magazynu w regionie pomocniczym
Ważne
Obsługa przywracania w regionie pomocniczym dla programu SQL z programu PowerShell jest dostępna z modułu Az 6.0.0
Jeśli włączono przywracanie między regionami, punkty odzyskiwania zostaną również zreplikowane do pomocniczego, sparowanego regionu. Następnie możesz pobrać te punkty odzyskiwania i wyzwolić przywracanie na maszynę, która znajduje się w tym sparowanym regionie. Podobnie jak w przypadku normalnego przywracania, maszyna docelowa powinna być zarejestrowana w magazynie docelowym w regionie pomocniczym. Poniższa sekwencja kroków powinna wyjaśnić kompleksową procedurę.
- Pobieranie elementów kopii zapasowej replikowanych do regionu pomocniczego
- W przypadku takiego elementu pobierz punkty odzyskiwania (odrębne i/lub dzienniki), które są replikowane do regionu pomocniczego
- Następnie wybierz serwer docelowy zarejestrowany w magazynie w sparowanym regionie pomocniczym
- Wyzwól przywracanie na ten serwer i śledź go przy użyciu identyfikatora JobId.
Pobieranie elementów kopii zapasowej z regionu pomocniczego
Pobierz wszystkie elementy kopii zapasowej SQL z regionu pomocniczego za pomocą zwykłego polecenia, ale z dodatkowym parametrem wskazującym, że te elementy powinny być pobierane z regionu pomocniczego.
$secondaryBkpItems = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID -UseSecondaryRegion
Pobieranie odrębnych punktów odzyskiwania z regionu pomocniczego
Użyj polecenia Get-AzRecoveryServicesBackupRecoveryPoint , aby pobrać odrębne punkty odzyskiwania (pełne/różnicowe) dla bazy danych SQL kopii zapasowej i dodać parametr, aby wskazać, że są to punkty odzyskiwania pobierane z regionu pomocniczego
$startDate = (Get-Date).AddDays(-7).ToUniversalTime()
$endDate = (Get-Date).ToUniversalTime()
Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -StartDate $startdate -EndDate $endDate -UseSecondaryRegion
Dane wyjściowe są podobne do poniższego przykładu
RecoveryPointId RecoveryPointType RecoveryPointTime ItemName BackupManagemen
tType
--------------- ----------------- ----------------- -------- ---------------
6660368097802 Full 3/18/2019 8:09:35 PM MSSQLSERVER;model AzureWorkload
Użyj filtru "RecoveryPointId" lub filtru tablicy, aby pobrać odpowiedni punkt odzyskiwania.
$FullRPFromSec = Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -RecoveryPointId "6660368097802" -UseSecondaryRegion
Pobieranie punktów odzyskiwania dziennika z regionu pomocniczego
Użyj polecenia cmdlet Get-AzRecoveryServicesBackupRecoveryLogChain PowerShell z parametrem "-UseSecondaryRegion", który zwróci czas rozpoczęcia i zakończenia nierozwiązanego, ciągłego łańcucha dzienników dla tego elementu kopii zapasowej SQL z regionu pomocniczego. Żądany punkt w czasie powinien mieścić się w tym zakresie.
Get-AzRecoveryServicesBackupRecoveryLogChain -Item $secondaryBkpItems[0] -VaultId $testVault.ID -UseSecondaryRegion
Dane wyjściowe będą podobne do poniższego przykładu.
ItemName StartTime EndTime
-------- --------- -------
SQLDataBase;MSSQLSERVER;azu... 3/18/2019 8:09:35 PM 3/19/2019 12:08:32 PM
Powyższe dane wyjściowe oznaczają, że można przywrócić do dowolnego punktu w czasie między wyświetlanym czasem rozpoczęcia a czasem zakończenia. Czasy są w formacie UTC. Skonstruuj dowolny punkt w czasie w programie PowerShell, który znajduje się w zakresie przedstawionym powyżej.
Pobieranie serwera docelowego z regionu pomocniczego
Z regionu pomocniczego potrzebujemy magazynu i serwera docelowego zarejestrowanego w tym magazynie. Gdy mamy kontener docelowy regionu pomocniczego i wystąpienie SQL, możemy ponownie użyć istniejących poleceń cmdlet w celu wygenerowania konfiguracji obciążenia przywracania. W tym dokumencie załóżmy, że nazwa maszyny wirtualnej to "secondaryVM", a nazwa wystąpienia na tej maszynie wirtualnej to "MSSQLInstance"
Najpierw pobieramy odpowiedni magazyn znajdujący się w regionie pomocniczym, a następnie pobieramy zarejestrowane kontenery w tym magazynie.
$PairedRegionVault = Get-AzRecoveryServicesVault -ResourceGroupName SecondaryRG -Name PairedVault
$secContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -Status Registered -VaultId $PairedRegionVault.ID -FriendlyName "secondaryVM"
Po wybraniu zarejestrowanego kontenera pobieramy wystąpienia SQL w kontenerze, do którego ma zostać przywrócona baza danych. W tym miejscu przyjęto założenie, że istnieje 1 wystąpienie SQL w ramach "secondaryVM" i pobieramy to wystąpienie.
$secSQLInstance = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -ItemType SQLInstance -VaultId $PairedRegionVault.ID -Container $secContainer
Przygotowywanie konfiguracji odzyskiwania
Jak opisano powyżej w przypadku normalnego przywracania SQL, to samo polecenie można ponownie użyć do wygenerowania odpowiedniej konfiguracji odzyskiwania.
Pełne przywracanie z regionu pomocniczego
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
W przypadku przywracania do punktu dziennika w czasie z regionu pomocniczego
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $secondaryBkpItems[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
Po uzyskaniu odpowiedniej konfiguracji dla przywracania regionu podstawowego lub przywracania regionu pomocniczego można użyć tego samego polecenia przywracania do wyzwalania przywracania i późniejszego śledzenia przy użyciu identyfikatorów zadań.
Przywracanie z odpowiednią konfiguracją
Po uzyskaniu i zweryfikowaniu odpowiedniego obiektu konfiguracji odzyskiwania użyj polecenia cmdlet Restore-AzRecoveryServicesBackupItem programu PowerShell, aby rozpocząć proces przywracania.
Restore-AzRecoveryServicesBackupItem -WLRecoveryConfig $AnotherInstanceWithLogConfig -VaultId $testVault.ID -RestoreToSecondaryRegion
Operacja przywracania zwraca zadanie do śledzenia.
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
MSSQLSERVER/m... Restore InProgress 3/17/2019 10:02:45 AM 3274xg2b-e4fg-5952-89b4-8cb566gc1748
Zarządzanie kopiami zapasowymi SQL
Kopia zapasowa na żądanie
Po włączeniu tworzenia kopii zapasowej dla bazy danych można również wyzwolić kopię zapasową na żądanie dla bazy danych przy użyciu polecenia cmdlet Backup-AzRecoveryServicesBackupItem programu PowerShell. Poniższy przykład wyzwala pełną kopię zapasową tylko do kopiowania w bazie danych SQL z włączoną kompresją, a kopia zapasowa tylko do kopiowania powinna być przechowywana przez 60 dni.
Uwaga
Kopie zapasowe tylko do kopiowania są idealne do przechowywania długoterminowego, ponieważ nie mają żadnych zależności od innych typów kopii zapasowych, takich jak dzienniki. Kopia zapasowa "Pełna" jest traktowana jako element nadrzędny kolejnych kopii zapasowych dziennika, dlatego przechowywanie jest powiązane z przechowywaniem dzienników w zasadach. W związku z tym klient podał czas wygaśnięcia jest honorowany dla kopii zapasowych tylko do kopiowania, a nie dla "pełnych" kopii zapasowych. Pełny czas przechowywania kopii zapasowej jest ustawiany automatycznie przez 45 dni od bieżącego czasu. Jest on również udokumentowany tutaj.
$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
Polecenie kopii zapasowej na żądanie zwraca zadanie do śledzenia.
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
MSSQLSERVER/m... Backup InProgress 3/18/2019 8:41:27 PM 2516bb1a-d3ef-4841-97a3-9ba455fb0637
Jeśli dane wyjściowe zostaną utracone lub chcesz uzyskać odpowiedni identyfikator zadania, pobierz listę zadań z usługi Azure Backup, a następnie śledź je i jego szczegóły.
Zmienianie zasad dla elementów kopii zapasowych
Możesz zmienić zasady elementu kopii zapasowej z Policy1
na Policy2
. Aby przełączyć zasady dla elementu kopii zapasowej, pobierz odpowiednie zasady i utwórz kopię zapasową elementu i użyj polecenia Enable-AzRecoveryServices z elementem kopii zapasowej jako parametrem.
$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName>
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType MSSQL -BackupManagementType AzureWorkload -Name "<BackupItemName>"
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1
Polecenie czeka na ukończenie konfiguracji kopii zapasowej i zwraca następujące dane wyjściowe.
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
Edytowanie istniejących zasad tworzenia kopii zapasowych
Aby edytować istniejące zasady, użyj polecenia Set-AzRecoveryServicesBackupProtectionPolicy .
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -SchedulePolicy $SchPol -RetentionPolicy $RetPol
Sprawdź zadania tworzenia kopii zapasowej po pewnym czasie, aby śledzić wszelkie błędy. Jeśli istnieją, musisz rozwiązać problemy. Następnie uruchom ponownie polecenie edytowania zasad za pomocą parametru FixForInconsistentItems , aby ponowić próbę edycji zasad we wszystkich elementach kopii zapasowej, dla których operacja nie powiodła się wcześniej.
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -FixForInconsistentItems
Ponowne rejestrowanie maszyn wirtualnych SQL
Ostrzeżenie
Pamiętaj, aby przeczytać ten dokument , aby zrozumieć objawy niepowodzenia i przyczyny przed podjęciem próby ponownej rejestracji
Aby wyzwolić ponowną rejestrację maszyny wirtualnej SQL, pobierz odpowiedni kontener kopii zapasowej i przekaż go do polecenia cmdlet register.
$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
Register-AzRecoveryServicesBackupContainer -Container $SQLContainer -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID
Zatrzymywanie ochrony
Zachowywanie danych
Jeśli chcesz zatrzymać ochronę, możesz użyć polecenia cmdlet Disable-AzRecoveryServicesBackupProtection programu PowerShell. Spowoduje to zatrzymanie zaplanowanych kopii zapasowych, ale kopie zapasowe danych będą przechowywane na zawsze.
$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $testVault.ID
Usuwanie danych kopii zapasowej
Aby całkowicie usunąć przechowywane dane kopii zapasowej w magazynie, wystarczy dodać flagę "-RemoveRecoveryPoints" /przełącz się do polecenia ochrony "disable".
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $testVault.ID -RemoveRecoveryPoints
Wyłączanie automatycznej ochrony
Jeśli automatyczna ochrony została skonfigurowana w usłudze SQLInstance, możesz ją wyłączyć przy użyciu polecenia cmdlet Disable-AzRecoveryServicesBackupAutoProtection programu PowerShell.
Znajdź wystąpienia, w których włączono automatyczną ochronę przy użyciu następującego polecenia programu PowerShell.
Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -VaultId $testVault.ID | Where-Object {$_.IsAutoProtected -eq $true}
Następnie wybierz odpowiednią nazwę elementu chronionego i nazwę serwera z danych wyjściowych i wyłącz automatyczną ochronę dla tych wystąpień.
$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
Wyrejestrowywanie maszyny wirtualnej SQL
Jeśli wszystkie bazy danych serwera SQL nie są już chronione i nie istnieją żadne dane kopii zapasowej, możesz wyrejestrować maszynę wirtualną SQL z tego magazynu. Tylko wtedy można chronić bazy danych w innym magazynie. Użyj polecenia cmdlet Unregister-AzRecoveryServicesBackupContainer programu PowerShell, aby wyrejestrować maszynę wirtualną SQL.
$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
Unregister-AzRecoveryServicesBackupContainer -Container $SQLContainer -VaultId $testVault.ID
Śledzenie zadań usługi Azure Backup
Należy pamiętać, że usługa Azure Backup śledzi tylko zadania wyzwalane przez użytkownika w kopii zapasowej SQL. Zaplanowane kopie zapasowe (w tym kopie zapasowe dzienników) nie są widoczne w portalu ani programie PowerShell. Jeśli jednak jakiekolwiek zaplanowane zadania kończą się niepowodzeniem , alert kopii zapasowej jest generowany i wyświetlany w portalu. Użyj usługi Azure Monitor , aby śledzić wszystkie zaplanowane zadania i inne istotne informacje.
Użytkownicy mogą śledzić operacje wyzwalane na żądanie/użytkownika za pomocą identyfikatora JobID zwróconego w danych wyjściowych zadań asynchronicznych, takich jak kopia zapasowa. Użyj polecenia cmdlet Get-AzRecoveryServicesBackupJobDetail programu PowerShell, aby śledzić zadanie i jego szczegóły.
Get-AzRecoveryServicesBackupJobDetails -JobId 2516bb1a-d3ef-4841-97a3-9ba455fb0637 -VaultId $testVault.ID
Aby uzyskać listę zadań na żądanie i ich stanu z usługi Azure Backup, użyj polecenia cmdlet Get-AzRecoveryServicesBackupJob programu PowerShell. Poniższy przykład zwraca wszystkie zadania SQL w toku.
Get-AzRecoveryServicesBackupJob -Status InProgress -BackupManagementType AzureWorkload
Aby anulować zadanie w toku, użyj polecenia cmdlet Stop-AzRecoveryServicesBackupJob programu PowerShell.
Zarządzanie zawsze włączonymi grupami dostępności SQL
W przypadku zawsze włączonych grup dostępności SQL pamiętaj, aby zarejestrować wszystkie węzły grupy dostępności. Po zakończeniu rejestracji dla wszystkich węzłów obiekt grupy dostępności SQL jest logicznie tworzony w ramach elementów chronionych. Bazy danych w ramach grupy dostępności SQL zostaną wyświetlone jako "SQLDatabase". Węzły będą wyświetlane jako wystąpienia autonomiczne, a domyślne bazy danych SQL w nich będą również wyświetlane jako bazy danych SQL.
Załóżmy na przykład, że grupa dostępności SQL ma dwa węzły: sql-server-0 i sql-server-1 i 1 baza danych grupy dostępności SQL. Po zarejestrowaniu obu tych węzłów, jeśli wyświetlisz listę elementów, które można chronić, zostaną wyświetlone następujące składniki
- Obiekt grupy dostępności SQL — typ elementu, który można chronić jako SQLAvailabilityGroup
- Baza danych grupy dostępności SQL — typ elementu, który można chronić jako SQLDatabase
- sql-server-0 — typ elementu, który można chronić jako sqlInstance
- sql-server-1 — typ elementu, który można chronić jako sqlInstance
- Wszystkie domyślne bazy danych SQL (master, model, msdb) w obszarze sql-server-0 — chroniony typ elementu jako SQLDatabase
- Wszystkie domyślne bazy danych SQL (master, model, msdb) w obszarze sql-server-1 — chroniony typ elementu jako SQLDatabase
sql-server-0, sql-server-1 będzie również wyświetlany jako "AzureVMAppContainer", gdy zostaną wyświetlone kontenery kopii zapasowych.
Wystarczy pobrać odpowiednią bazę danych, aby włączyć tworzenie kopii zapasowych, a polecenia cmdlet programu PowerShell na żądanie i ich przywracanie są identyczne.