Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 usługi Azure Backup w magazynie usługi Recovery Services.
Wymagania wstępne
Przed utworzeniem kopii zapasowej i przywróceniem baz danych SQL na maszynach wirtualnych platformy Azure przy użyciu programu PowerShell upewnij się, że zostały spełnione następujące wymagania wstępne:
- Sprawdź możliwości funkcji 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ń cmdletaz.RecoveryServices w bibliotece platformy Azure.
Konfigurowanie i instalowanie programu PowerShell dla usługi Azure Backup
Skonfiguruj program PowerShell w następujący sposób:
Pobierz najnowszą wersję Az 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 tworzenia kopii zapasowych Azure Backup i skrytki 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 stronie internetowej, która się pojawi, zostaniesz poproszony o wprowadzenie poświadczeń konta.
- Alternatywnie możesz dołączyć poświadczenia konta jako parametr -Credential do polecenia cmdlet Connect-AzAccount.
- Jeśli jesteś partnerem CSP pracującym z klientem będącym najemcą, określ klienta jako najemcę, używając identyfikatora najemcy lub głównej nazwy domeny najemcy. Przykładem jest Connect-AzAccount -Tenant fabrikam.com.
Skojarz subskrypcję, której chcesz używać z kontem, ponieważ konto może mieć kilka subskrypcji.
Select-AzSubscription -SubscriptionName $SubscriptionNameJeś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 RegistrationState zmieni się na Zarejestrowany. Jeśli tak nie jest, uruchom ponownie polecenie cmdlet Register-AzResourceProvider .
Tworzenie magazynu usługi Recovery Services i ustawianie kontekstu magazynu
Aby skonfigurować kopię zapasową baz danych SQL na maszynach wirtualnych platformy Azure, należy najpierw utworzyć magazyn usługi Recovery Services i ustawić kontekst magazynu.
Utwórz skarbiec dla Recovery Services
Wykonaj następujące kroki, aby utworzyć magazyn usług odzyskiwania.
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.
Sejf został umieszczony 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 tworzymy nową grupę zasobów w regionie Zachodniego USA.
New-AzResourceGroup -Name "test-rg" -Location "West US"Użyj polecenia cmdlet New-AzRecoveryServicesVault, aby utworzyć skrytkę. Określ tę samą lokalizację skarbca, 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 skarbca.
- Możesz użyć magazynu lokalnie nadmiarowego, magazynu geograficznie nadmiarowego lub magazynu strefowo nadmiarowego .
- W poniższym przykładzie
-BackupStorageRedundancyustawiono opcję set-AzRecoveryServicesBackupProperty cmd dlatestvaultparametruGeoRedundant.
$vault1 = Get-AzRecoveryServicesVault -Name "testvault" Set-AzRecoveryServicesBackupProperties -Vault $vault1 -BackupStorageRedundancy GeoRedundant
Wyświetl sejfy 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 skojarzoną 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
Ustaw kontekst skrytki
Zapisz obiekt skarbca w zmiennej i ustaw kontekst skarbca.
- Wiele poleceń cmdlet Azure Backup wymaga obiektu skarbca usługi Recovery Services jako danych wejściowych, więc wygodnie jest przechowywać obiekt skarbca w zmiennej.
- Kontekst magazynu to rodzaj 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 skarbca dla testvault
Get-AzRecoveryServicesVault -Name "testvault" | Set-AzRecoveryServicesVaultContext
Pobierz identyfikator skarbca
Planujemy wycofanie ustawienia kontekstu skarbca zgodnie z wytycznymi 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 tworzenia kopii zapasowych dla baz danych SQL
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 . Wprowadzono obiekty harmonogramu i zasad 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
Important
Musisz podać czas rozpoczęcia tylko w odstępach 30-minutowych. 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".
Na poniższym przykładzie zasady dotyczące harmonogramu oraz zachowania danych są zapisane 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łączanie tworzenia kopii zapasowej dla baz danych SQL
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"
Note
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 zarejestrowanych w tym magazynie maszynach wirtualnych SQL, z typem elementu oraz nazwą serwera. 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>"
Skonfiguruj kopię zapasową
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 będzie czekać do momentu zakończenia 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łącz automatyczną ochronę dla przyszłych baz danych SQL
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 wystąpienia 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 ustawieniu intencji ochrony automatycznej przeprowadzane jest zapytanie do maszyny w celu pobrania nowo dodanych baz danych, jako zaplanowane zadanie w tle odbywające się co 8 godzin.
Przywracanie baz danych SQL na maszynach wirtualnych platformy Azure
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ą w celu osiągnięcia określonego punktu odzyskiwania.
Przed przywróceniem baz danych SQL sprawdź wymagania wstępne wymienione tutaj .
Warning
Ze względu na problem z zabezpieczeniami związany z Role-Based Access Control (RBAC) musieliśmy wprowadzić istotną zmianę w przywracaniu poleceń dla bazy danych SQL za pośrednictwem 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
Pobierz odpowiedni czas przywracania
Jak opisano powyżej, możesz przywrócić zarchiwizowaną kopię zapasową bazy danych SQL do pełnej lub różnicowej kopii LUB do określonego punktu w czasie dziennika.
Pobierz odrębne punkty 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"
Pobierz punkt odzyskiwania z określonego momentu w czasie
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.
Note
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, to znaczy, którą pełną kopię zapasową 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 tej samej instancji 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.
Przywracanie oryginalnych obciążeń
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 logiem punktu czasowego
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -OriginalWorkloadRestore -VaultId $testVault.ID
Alternatywne przywracanie obciążeń roboczych
Important
Przywróconą kopię zapasową bazy danych SQL można odtworzyć jako nową bazę danych tylko do innej instancji SQL na maszynie wirtualnej platformy Azure, zarejestrowanej w tym skarbcu.
Jak opisano powyżej, jeśli docelowy SQLInstance znajduje się na innej maszynie wirtualnej platformy Azure, upewnij się, że jest zarejestrowany w tym magazynie, a odpowiedni SQLInstance jest widoczny jako element z możliwością ochrony. W tym dokumencie załóżmy, że docelową nazwą wystąpienia SQL jest MSSQLSERVER w 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 określić odpowiedni punkt odzyskiwania, docelowe wystąpienie SQL z właściwą flagą, jak pokazano poniżej, oraz kontener docelowy, w którym znajduje się docelowe wystąpienie SQL.
Alternatywne przywracanie z odrębnym punktem przywracania
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Alternatywne odzyskiwanie z punktem czasowym w dzienniku
$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 . Zapasową bazę danych SQL można przywrócić do dowolnej docelowej maszyny wirtualnej zarejestrowanej w tym skarbcu.
$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
Przywróć jako pliki z odrębnym punktem odzyskiwania
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Przywracanie plików z punktu czasowego dziennika z najnowszej pełnej kopii zapasowej.
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Przywróć jako pliki z punktu czasowego dziennika z określonej pełnej kopii zapasowej
Jeśli chcesz określić pełną kopię zapasową, 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
Important
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.
Note
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
Important
Obsługa przywracania w dodatkowym regionie dla SQL z PowerShell jest dostępna w 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 uruchomić proces przywracania na maszynie, 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 skarbcu w sparowanym regionie zapasowym
- Zainicjuj przywracanie na ten serwer i śledź je za pomocą 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
Pobierz unikalne punkty odzyskiwania z regionu zapasowego
Użyj polecenia Get-AzRecoveryServicesBackupRecoveryPoint w celu pobrania odrębnych punktów odzyskiwania (pełnych/różnicowych) dla kopii zapasowej bazy danych SQL oraz dodania parametru, który wskaże, że są to punkty pobierane z regionu zapasowego.
$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 przywracania dziennika z regionu zapasowego
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 dla pomocniczego regionu docelowego oraz wystąpienie SQL, możemy ponownie wykorzystać istniejące polecenia cmdlet do wygenerowania konfiguracji zadania 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 skarbiec znajdujący się w regionie pomocniczym, a następnie uzyskujemy zarejestrowane kontenery w tym skarbcu.
$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 drugiego regionu
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
W przypadku przywracania w czasie określonego punktu dziennika z regionu wtórnego
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ń.
Przywróć 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.
Note
Pełne kopie zapasowe tylko do kopiowania są idealne do przechowywania długoterminowego, ponieważ nie mają żadnych powiązań z innymi typami kopii zapasowych, takimi jak dzienniki. Kopia zapasowa "Pełna" jest traktowana jako kopia nadrzędna kolejnych kopii zapasowych dziennika, a jej przechowywanie jest powiązane z przechowywaniem dzienników w polityce przechowywania. W związku z tym czas wygaśnięcia podany przez klienta jest honorowany dla pełnych kopii zapasowych wykonywanych tylko do celów 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
Warning
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
Zatrzymaj ochronę
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 ochrona została skonfigurowana na 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 przestały być chronione i nie istnieją wszelkie dane kopii zapasowej, możesz wyrejestrować maszynę wirtualną SQL z tego skarbca. 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 uruchamiane na żądanie przez użytkownika za pomocą JobID zwróconego w danych wyjściowych zadań asynchronicznych, takich jak kopie zapasowe. 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 grupami dostępności SQL Always On
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 niezależne instancje, a domyślne bazy danych SQL, które się pod nimi znajdują, również będą wymienione 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 rejestracji obu węzłów, jeśli wyświetlisz listę elementów, które można chronić, pojawią się 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 ramach sql-server-0 — typ elementu chronionego 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.