Udostępnij za pomocą


Informacje o kopii zapasowej programu SQL Server na maszynach wirtualnych platformy Azure

Usługa Azure Backup oferuje oparte na strumieniu, wyspecjalizowane rozwiązanie do tworzenia kopii zapasowych programu SQL Server działającego na maszynach wirtualnych platformy Azure. To rozwiązanie jest zgodne z korzyściami usługi Azure Backup w zakresie tworzenia kopii zapasowych bez infrastruktury, długoterminowego przechowywania i centralnego zarządzania. Ponadto zapewnia następujące korzyści w szczególności dla programu SQL Server:

  • Kopie zapasowe zoptymalizowane pod kątem obciążenia obsługujące wszystkie typy kopii zapasowych: pełne, różnicowe i kopie dzienników
  • 15-minutowy RPO (recovery point objective) z częstymi kopiami zapasowymi dziennika
  • Odzyskiwanie punktu z dokładnością do sekundy
  • Tworzenie kopii zapasowej i przywracanie poszczególnych poziomów bazy danych

Aby wyświetlić scenariusze tworzenia kopii zapasowych i przywracania, które obecnie obsługujemy, zobacz macierz wsparcia.

Proces tworzenia kopii zapasowej

To rozwiązanie wykorzystuje natywne interfejsy API SQL do tworzenia kopii zapasowych baz danych SQL.

  • Po określeniu maszyny wirtualnej programu SQL Server, którą chcesz chronić, oraz zapytaniu o obecne na niej bazy danych, usługa Azure Backup zainstaluje rozszerzenie kopii zapasowej obciążenia na maszynie wirtualnej o nazwie AzureBackupWindowsWorkload.

  • To rozszerzenie składa się z koordynatora i wtyczki SQL. Koordynator jest odpowiedzialny za wyzwalanie przepływów pracy dla różnych operacji, takich jak konfigurowanie kopii zapasowych, tworzenia kopii zapasowych i przywracania, wtyczka jest odpowiedzialna za rzeczywisty przepływ danych.

  • Aby móc odnajdywać bazy danych na tej maszynie wirtualnej, usługa Azure Backup tworzy konto NT SERVICE\AzureWLBackupPluginSvc. To konto jest używane do tworzenia kopii zapasowych i przywracania oraz wymaga uprawnień administratora systemu SQL. Konto NT SERVICE\AzureWLBackupPluginSvc jest kontem usługi wirtualnej i nie wymaga zarządzania hasłami. Usługa Azure Backup używa NT AUTHORITY\SYSTEM konta do odkrywania/zapytania bazy danych, więc to konto musi być publicznym kontem logowania w usłudze SQL. Jeśli nie utworzono maszyny wirtualnej programu SQL Server z witryny Azure Marketplace, może wystąpić błąd UserErrorSQLNoSysadminMembership. W takim przypadku wykonaj te instrukcje.

  • Po wyzwoleniu konfiguracji ochrony w wybranych bazach danych usługa tworzenia kopii zapasowych konfiguruje koordynatora z harmonogramami tworzenia kopii zapasowych i innymi szczegółami zasad, które rozszerzenie buforuje lokalnie na maszynie wirtualnej.

  • W zaplanowanym czasie koordynator komunikuje się z wtyczką i rozpoczyna przesyłanie strumieniowe danych kopii zapasowej z serwera SQL przy użyciu interfejsu VDI (Virtual Device Interface).

  • Wtyczka wysyła dane bezpośrednio do skarbca Recovery Services, eliminując w ten sposób potrzebę miejsca przejściowego. Dane są szyfrowane i przechowywane przez usługę Azure Backup w kontach magazynowych.

  • Po zakończeniu transferu danych koordynator potwierdza zatwierdzenie z usługą tworzenia kopii zapasowych.

    Architektura kopii zapasowej SQL

Przed rozpoczęciem

Przed rozpoczęciem sprawdź następujące wymagania:

  1. Upewnij się, że masz uruchomioną instancję SQL Server na platformie Azure. Możesz szybko utworzyć wystąpienie programu SQL Server w Marketplace.
  2. Zapoznaj się z zagadnieniami dotyczącymi funkcji i wsparciem dla scenariuszy.
  3. Przejrzyj często zadawane pytania dotyczące tego scenariusza.

Ustawianie uprawnień maszyny wirtualnej

Po uruchomieniu odnajdywania w programie SQL Server usługa Azure Backup wykonuje następujące czynności:

  • Dodaje rozszerzenie AzureBackupWindowsWorkload.
  • Tworzy konto NT SERVICE\AzureWLBackupPluginSvc w celu odnajdywania baz danych na maszynie wirtualnej. To konto jest używane na potrzeby tworzenia kopii zapasowej i przywracania oraz wymaga uprawnień administratora systemu SQL.
  • Odnajduje bazy danych uruchomione na maszynie wirtualnej, usługa Azure Backup używa konta NT AUTHORITY\SYSTEM. To konto musi być kontem publicznego logowania w usłudze SQL.

Jeśli nie utworzono maszyny wirtualnej z programem SQL Server w witrynie Azure Marketplace lub jeśli korzystasz z programu SQL 2008 lub 2008 R2, może zostać wyświetlony błąd UserErrorSQLNoSysadminMembership .

Aby nadać uprawnienia w przypadku programu SQL 2008 i 2008 R2 działającego w systemie Windows 2008 R2, zapoznaj się z tym artykułem.

W przypadku wszystkich innych wersji popraw uprawnienia, wykonując następujące czynności:

  1. Zaloguj się do programu SQL Server Management Studio (SSMS), używając konta z uprawnieniami administratora systemu SQL Server. Jeśli nie potrzebujesz specjalnych uprawnień, uwierzytelnianie systemu Windows powinno działać.

  2. W programie SQL Server otwórz folder Security/Logins.

    Otwieranie folderu Security/Logins w celu wyświetlenia kont

  3. Kliknij prawym przyciskiem myszy folder Logins, a następnie wybierz pozycję Nowa nazwa logowania. W oknie Nazwa logowania — nowa wybierz pozycję Wyszukaj.

    W oknie dialogowym Logowanie — Nowe, wybierz Wyszukaj

  4. Konto usługi wirtualnej systemu Windows NT SERVICE\AzureWLBackupPluginSvc zostało utworzone podczas rejestracji maszyny wirtualnej i fazy odnajdywania SQL. Wprowadź nazwę konta, jak pokazano w polu Wprowadź nazwę obiektu do wybrania. Wybierz pozycję Sprawdź nazwy w celu rozpoznania nazwy. Wybierz przycisk OK.

    Wybierz Sprawdź nazwy, aby rozpoznać nieznaną nazwę usługi

  5. W obszarze Role serwera sprawdź, czy wybrano rolę sysadmin. Wybierz przycisk OK. Wymagane uprawnienia powinny teraz istnieć.

    Upewnij się, że wybrano rolę sysadmin

    Jeśli wystąpienie programu SQL Server jest częścią Always-On Grupy Dostępności (AG), upewnij się, że konto NT AUTHORITY\SYSTEM ma włączone uprawnienie WYŚWIETL STAN SERWERA.

    Zrzut ekranu pokazujący, jak sprawdzić uprawnienia na instancji serwera SQL wybranej do tworzenia kopii zapasowej.

  6. Skojarz bazę danych z magazynem usługi Recovery Services. W portalu Azure na liście Serwery chronione kliknij prawym przyciskiem myszy serwer znajdujący się w stanie błędu i wybierz >.

    Sprawdzanie, czy serwer ma odpowiednie uprawnienia

  7. Sprawdź postęp w obszarze Powiadomienia. Po znalezieniu wybranych baz danych zostanie wyświetlony komunikat o powodzeniu.

    Komunikat o powodzeniu wdrożenia

Uwaga

Jeśli program SQL Server ma zainstalowane wiele wystąpień programu SQL Server, musisz dodać uprawnienia administratora systemu dla konta NT Service\AzureWLBackupPluginSvc do wszystkich wystąpień SQL.

Przyznawanie uprawnień administratora systemu SQL dla programów SQL 2008 i SQL 2008 R2

Dodaj loginy NT AUTHORITY\SYSTEM i NT Service\AzureWLBackupPluginSvc do instancji SQL Server:

  1. Przejdź do wystąpienia programu SQL Server w Eksploratorze obiektów.

  2. Przejdź do obszaru Zabezpieczenia —> Logowania

  3. Kliknij prawym przyciskiem myszy loginy i wybierz pozycję Nowe logowanie...

    Nowe logowanie przy użyciu programu SSMS

  4. Przejdź do karty Ogólne i wprowadź NT AUTHORITY\SYSTEM jako nazwę logowania.

    Nazwa logowania dla programu SSMS

  5. Przejdź do pozycji Role serwera i wybierz role publiczne i sysadmin .

    Wybór ról w programie SSMS

  6. Przejdź do Status. Udziel uprawnienia do nawiązywania połączenia z silnikiem bazy danych i zaloguj się z ustawieniem na włączone.

    Udzielanie uprawnień w programie SSMS

  7. Wybierz przycisk OK.

  8. Powtórz tę samą sekwencję kroków (1–7 powyżej), aby dodać login NT Service\AzureWLBackupPluginSvc do wystąpienia programu SQL Server. Jeśli logowanie już istnieje, upewnij się, że ma rolę serwera sysadmin i w obszarze Stan ma uprawnienie Przyznaj uprawnienia do łączenia się z aparatem bazy danych i Zaloguj się jako Włączone.

  9. Po udzieleniu uprawnień, ponownie odnajdź bazy danych w portalu: Magazyn -> Zarządzanie -> Infrastruktura kopii zapasowych -> Obciążenie na maszynie wirtualnej platformy Azure:

    Ponowne odnajdowanie baz danych w witrynie Azure Portal

Alternatywnie możesz zautomatyzować nadawanie uprawnień, uruchamiając następujące polecenia programu PowerShell w trybie administratora. Nazwa wystąpienia jest domyślnie ustawiona na MSSQLSERVER. W razie potrzeby zmień argument nazwy wystąpienia w skrypcie.

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it is the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

Konfigurowanie równoczesnych kopii zapasowych

Teraz można skonfigurować kopie zapasowe w celu zapisania punktów odzyskiwania i dzienników programu SQL Server w magazynie lokalnym i magazynie usługi Recovery Services jednocześnie.

Aby skonfigurować równoczesne kopie zapasowe, wykonaj następujące kroki:

  1. Przejdź do C:\Program Files\Azure Workload Backup\bin\plugins lokalizacji, a następnie utwórz plik PluginConfigSettings.json, jeśli nie jest obecny.

  2. Dodaj rozdzielone przecinkami jednostki wartości klucza z kluczami EnableLocalDiskBackupForBackupTypes i LocalDiskBackupFolderPath do pliku JSON.

    • W obszarze EnableLocalDiskBackupForBackupTypes, wyświetl listę typów kopii zapasowych, które mają być przechowywane lokalnie.

      Jeśli na przykład chcesz przechowywać Pełne kopie zapasowe i kopie zapasowe dziennika, podaj wartość ["Full", "Log"]. Aby przechowywać tylko kopie zapasowe dzienników, należy wspomnieć o ["Log"].

    • W obszarze LocalDiskBackupFolderPathpodaj ścieżkę do folderu lokalnego. Używaj podwójnego ukośnika podczas podawania ścieżki w pliku JSON.

      Jeśli na przykład preferowaną ścieżką dla lokalnej kopii zapasowej jest E:\LocalBackup, podaj ścieżkę w formacie JSON jako E:\\LocalBackup.

      Ostatni kod JSON powinien wyglądać następująco:

      {
         "EnableLocalDiskBackupForBackupTypes": ["Log"],
         "LocalDiskBackupFolderPath": "E:\\LocalBackup",
      }
      

      Jeśli w pliku JSON znajdują się inne wstępnie wypełnione wpisy, dodaj powyższe dwa wpisy w dolnej części pliku JSON tuż przed zamykającym nawiasem klamrowym.

  3. Aby zmiany zaczęły obowiązywać natychmiast zamiast regularnej jednej godziny, przejdź do , kliknij prawym przyciskiem myszy pozycję > i wybierz pozycję Zatrzymaj.

    Uwaga

    Ta akcja spowoduje anulowanie wszystkich bieżących zadań tworzenia kopii zapasowej.

    Konwencja nazewnictwa przechowywanego pliku kopii zapasowej i struktury folderów dla niego będzie .{LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}

    Jeśli na przykład masz bazę danych Contoso w wystąpieniu SQL MSSQLSERVER, pliki będą znajdować się w lokalizacji E:\LocalBackup\MSSQLSERVER\Contoso.

    Nazwa pliku to VDI device set guid, który jest używany do operacji tworzenia kopii zapasowej.

  4. Sprawdź, czy lokalizacja docelowa w obszarze LocalDiskBackupFolderPath ma uprawnienia do odczytu i zapisu dla elementu NT Service\AzureWLBackupPluginSvc.

    Uwaga

    W przypadku folderu na lokalnych dyskach maszyn wirtualnych kliknij prawym przyciskiem myszy folder i skonfiguruj wymagane uprawnienia na NT Service\AzureWLBackupPluginSvckarcie Zabezpieczenia .

    Jeśli używasz sieci lub udziału SMB, skonfiguruj uprawnienia, uruchamiając poniższe polecenia cmdlet programu PowerShell z konsoli użytkownika, która ma już uprawnienia dostępu do udziału:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>:  -FullAccess @("<Comma Separated list of accounts>") -Persistent $true
    

    Przykład:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y:  -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true
    

Następne kroki