Udostępnij za pośrednictwem


Przygotowanie drugorzędnej bazy danych dla grupy dostępności Always On

Dotyczy:programu SQL Server

W tym temacie opisano sposób przygotowywania bazy danych dla zawsze włączonej grupy dostępności w programie SQL Server przy użyciu programu SQL Server Management Studio, Języka Transact-SQL lub programu PowerShell. Przygotowanie bazy danych wymaga dwóch kroków:

  1. Przywróć najnowszą kopię zapasową bazy danych głównej oraz kolejne kopie zapasowe dziennika na każdym wystąpieniu serwera hostującym replikę pomocniczą, używając funkcji RESTORE WITH NORECOVERY.
  2. Dołącz przywróconą bazę danych do grupy dostępności.

Napiwek

Jeśli masz istniejącą konfigurację wysyłania dziennika, możesz przekonwertować podstawową bazę danych wysyłki dziennika wraz z co najmniej jedną z jej pomocniczych baz danych na replikę podstawową grupy dostępności i co najmniej jedną replikę pomocniczą. Aby uzyskać więcej informacji, zobacz Wymagania wstępne dotyczące migracji z wysyłania dziennika do zawsze włączonych grup dostępności (SQL Server).

Wymagania wstępne i ograniczenia

  • Upewnij się, że system, w którym planujesz umieścić bazę danych, ma dysk z wystarczającą ilością miejsca dla pomocniczych baz danych.

  • Nazwa pomocniczej bazy danych musi być taka sama jak nazwa podstawowej bazy danych.

  • Użyj RESTORE WITH NORECOVERY dla każdej operacji przywracania.

  • Jeśli pomocnicza baza danych musi znajdować się w innej ścieżce pliku (w tym literę dysku) niż podstawowa baza danych, polecenie przywracania musi również używać opcji WITH MOVE dla każdego z plików bazy danych, aby określić je do ścieżki pomocniczej bazy danych.

  • Jeśli przywrócisz grupę plików bazy danych według grupy plików, pamiętaj, aby przywrócić całą bazę danych.

  • Po przywróceniu bazy danych należy przywrócić (NORECOVERY) każdą kopię zapasową dziennika utworzoną od czasu ostatniej przywróconej kopii zapasowej danych.

Zalecenia

  • W autonomicznych wystąpieniach programu SQL Server zalecamy, aby w miarę możliwości ścieżka pliku (w tym litera dysku) danej pomocniczej bazy danych był identyczna ze ścieżką odpowiedniej podstawowej bazy danych. Dzieje się tak dlatego, że w przypadku przenoszenia plików bazy danych podczas tworzenia pomocniczej bazy danych późniejsza operacja dodawania pliku może zakończyć się niepowodzeniem w pomocniczej bazie danych i spowodować wstrzymanie pomocniczej bazy danych.

  • Przed przygotowaniem baz danych wtórnych zdecydowanie zalecamy wstrzymanie zaplanowanych kopii zapasowych dzienników w bazach danych w grupie dostępności aż do momentu ukończenia inicjowania replik wtórnych.

Bezpieczeństwo

Po utworzeniu kopii zapasowej bazy danych, właściwość bazy danych TRUSTWORTHY jest ustawiona na WYŁĄCZONA. W związku z tym funkcja TRUSTWORTHY zawsze jest wyłączona w nowo przywróconej bazie danych.

Uprawnienia

Domyślne uprawnienia KOPII ZAPASOWEJ BAZY DANYCH i KOPII ZAPASOWEJ DZIENNIKA przypisywane są członkom stałej roli serwera sysadmin oraz stałym rolom bazy danych db_owner i db_backupoperator. Aby uzyskać więcej informacji, zobacz BACKUP (Transact-SQL).

Jeśli przywracana baza danych nie istnieje w wystąpieniu serwera, instrukcja RESTORE wymaga uprawnień CREATE DATABASE. Aby uzyskać więcej informacji, zobacz RESTORE (Transact-SQL).

Korzystanie z programu SQL Server Management Studio

Notatka

Jeśli ścieżki plików kopii zapasowej i przywracania są identyczne między wystąpieniem serwera, które hostuje replikę podstawową i każde wystąpienie hostujące replikę pomocniczą, powinno być możliwe utworzenie pomocniczych baz danych za pomocą Kreatora nowej grupy dostępności, Kreator dodawania repliki do grupy dostępnościlub Dodaj bazę danych do kreatora grupy dostępności.

Aby przygotować pomocniczą bazę danych

  1. Jeśli nie masz już najnowszej kopii zapasowej bazy danych podstawowej bazy danych, utwórz nową pełną lub różnicową kopię zapasową bazy danych. Najlepszym rozwiązaniem jest umieszczenie tej kopii zapasowej i wszelkich kolejnych kopii zapasowych dziennika w zalecanym udziale sieciowym.

  2. Utwórz co najmniej jedną nową kopię zapasową dziennika podstawowej bazy danych.

Notatka

Tworzenie kopii zapasowej dziennika transakcji może nie być wymagane, jeśli kopia zapasowa dziennika transakcji nie została wcześniej przechwycona w bazie danych w repliki podstawowej. Firma Microsoft zaleca wykonywanie kopii zapasowej dziennika transakcji za każdym razem, gdy nowa baza danych jest przyłączona do grupy dostępności.

  1. Na wystąpieniu serwera, które hostuje replikę pomocniczą, przywróć pełną kopię zapasową bazy danych podstawowej (oraz opcjonalnie różnicową kopię zapasową), a następnie wszelkie kolejne kopie zapasowe dziennika.

    Na stronie RESTORE DATABASE Options (Opcje PRZYWRACANIA BAZY DANYCH) wybierz opcję Pozostawienie bazy danych nieoperacyjnej i nie wycofywanie niezatwierdzonych transakcji. Można przywrócić dodatkowe dzienniki transakcji. (PRZYWRÓĆ Z BEZRECOVERY).

    Jeśli ścieżki plików podstawowej bazy danych i pomocniczej bazy danych różnią się, na przykład jeśli podstawowa baza danych znajduje się na dysku "F", ale wystąpienie serwera hostujące replikę pomocniczą nie ma dysku F:, dołącz opcję MOVE w klauzuli WITH.

  2. Aby ukończyć konfigurację pomocniczej bazy danych, należy dołączyć pomocniczą bazę danych do grupy dostępności. Aby uzyskać więcej informacji, Dołącz pomocniczą bazę danych do grupy dostępności (SQL Server).

Notatka

Aby uzyskać informacje o sposobie wykonywania tych operacji tworzenia i przywracania kopii zapasowych, zobacz Powiązane zadania tworzenia kopii zapasowych i przywracaniaw dalszej części tej sekcji.

Powiązane zadania tworzenia kopii zapasowych i przywracania

Aby utworzyć kopii zapasowej bazy danych

Aby utworzyć kopię zapasową dziennika

Aby przywrócić kopie zapasowe

Korzystanie z Transact-SQL

Aby przygotować pomocniczą bazę danych

Notatka

Aby zapoznać się z przykładem tej procedury, zobacz Przykład (Transact-SQL), wcześniej w tym temacie.

  1. Jeśli nie masz najnowszej pełnej kopii zapasowej podstawowej bazy danych, połącz się z wystąpieniem serwera hostujące replikę podstawową i utwórz pełną kopię zapasową bazy danych. Najlepszym rozwiązaniem jest umieszczenie tej kopii zapasowej i wszelkich kolejnych kopii zapasowych dziennika w zalecanym udziale sieciowym.

  2. W wystąpieniu serwera, które hostuje replikę pomocniczą, przywróć pełną kopię zapasową bazy danych podstawowej (i opcjonalnie różnicową kopię zapasową), a następnie wszystkie kolejne kopie zapasowe dziennika transakcji. Użyj funkcji WITH NORECOVERY dla każdej operacji przywracania.

    Jeśli ścieżki plików podstawowej bazy danych i pomocniczej bazy danych różnią się, na przykład jeśli podstawowa baza danych znajduje się na dysku "F", ale wystąpienie serwera hostujące replikę pomocniczą nie ma dysku F:, dołącz opcję MOVE w klauzuli WITH.

  3. Jeśli po wymaganej kopii zapasowej dziennika wykonano jakiekolwiek kopie zapasowe dziennika w podstawowej bazie danych, należy je także skopiować do instancji serwera, która hostuje replikę pomocniczą. Następnie każdą z tych kopii zapasowych należy zastosować do pomocniczej bazy danych, zaczynając od najwcześniejszej i zawsze korzystając z komendy RESTORE WITH NORECOVERY.

    Notatka

    Kopia zapasowa dziennika nie istnieje, jeśli podstawowa baza danych została utworzona i nie utworzono jeszcze żadnej kopii zapasowej dziennika lub jeśli model odzyskiwania został właśnie zmieniony z prostego na pełny.

  4. Aby ukończyć konfigurację pomocniczej bazy danych, należy dołączyć pomocniczą bazę danych do grupy dostępności. Aby uzyskać więcej informacji, dołączyć pomocniczą bazę danych do grupy dostępności (SQL Server).

Notatka

Aby uzyskać informacje o sposobie wykonywania tych operacji tworzenia i przywracania kopii zapasowych, zobacz Powiązane zadania tworzenia kopii zapasowych i przywracaniaw dalszej części tego tematu.

Przykład Transact-SQL

Poniższy przykład przygotowuje pomocniczą bazę danych. W tym przykładzie użyto przykładowej bazy danych AdventureWorks2022, która domyślnie używa prostego modelu odzyskiwania.

  1. Aby użyć bazy danych AdventureWorks2022, zmodyfikuj ją tak, aby korzystała z pełnego modelu odzyskiwania:

    USE master;  
    GO  
    ALTER DATABASE MyDB1   
    SET RECOVERY FULL;  
    GO  
    
  2. Po zmodyfikowaniu modelu odzyskiwania bazy danych z SIMPLE do FULL utwórz pełną kopię zapasową, której można użyć do utworzenia pomocniczej bazy danych. Ponieważ model odzyskiwania został właśnie zmieniony, opcja WITH FORMAT jest określana w celu utworzenia nowego zestawu multimediów. Jest to przydatne, aby oddzielić kopie zapasowe w modelu pełnego odzyskiwania od wszystkich poprzednich kopii zapasowych wykonanych w ramach prostego modelu odzyskiwania. W tym przykładzie plik kopii zapasowej (C:\AdventureWorks2022.bak) jest tworzony na tym samym dysku co baza danych.

    Notatka

    W przypadku produkcyjnej bazy danych należy zawsze tworzyć kopie zapasowe na osobnym urządzeniu.

    W wystąpieniu serwera, które hostuje replikę podstawową (INSTANCE01), utwórz pełną kopię zapasową podstawowej bazy danych w następujący sposób:

    BACKUP DATABASE MyDB1   
        TO DISK = 'C:\MyDB1.bak'   
        WITH FORMAT  
    GO  
    
  3. Skopiuj pełną kopię zapasową do wystąpienia serwera, które hostuje replikę pomocniczą.

  4. Przywróć pełną kopię zapasową przy użyciu polecenia RESTORE WITH NORECOVERY, do instancji serwera, który hostuje replikę wtórną. Polecenie przywracania zależy od tego, czy ścieżki podstawowych i pomocniczych baz danych są identyczne.

    • Jeśli ścieżki są identyczne:

      Na komputerze, który hostuje replikę pomocniczą, przywróć pełną kopię zapasową w następujący sposób:

      RESTORE DATABASE MyDB1   
          FROM DISK = 'C:\MyDB1.bak'   
          WITH NORECOVERY  
      GO  
      
    • Jeśli ścieżki różnią się:

      Jeśli ścieżka pomocniczej bazy danych różni się od ścieżki podstawowej bazy danych (na przykład ich litery dysku różnią się), utworzenie pomocniczej bazy danych wymaga, aby operacja przywracania zawierała klauzulę MOVE.

      Ważny

      Jeśli nazwy ścieżek podstawowych i pomocniczych baz danych różnią się, nie można dodać pliku. Dzieje się tak dlatego, że po otrzymaniu dziennika operacji dodawania pliku wystąpienie serwera repliki pomocniczej próbuje umieścić nowy plik w tej samej ścieżce, co używana przez podstawową bazę danych.

      Na przykład następujące polecenie przywraca kopię zapasową podstawowej bazy danych znajdującej się w katalogu danych domyślnego wystąpienia programu SQL Server, C:\Program Files\Microsoft SQL Server\MSSQL12. MSSQLSERVER\MSSQL\DATA. Operacja przywracania bazy danych musi przenieść bazę danych do katalogu danych zdalnej instancji SQL Server o nazwie (Always On1), która obsługuje replikę pomocniczą w innym węźle klastra. W tym miejscu pliki danych i dziennika są przywracane do C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA katalogu. Operacja przywracania używa funkcji WITH NORECOVERY, aby pozostawić pomocniczą bazę danych w przywracającej bazie danych.

      RESTORE DATABASE MyDB1  
        FROM DISK='C:\MyDB1.bak'  
       WITH NORECOVERY,   
          MOVE 'MyDB1_Data' TO   
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf',   
          MOVE 'MyDB1_Log' TO  
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf';  
      GO  
      
  5. Po przywróceniu pełnej kopii zapasowej należy utworzyć kopię zapasową dziennika w podstawowej bazie danych. Na przykład następująca instrukcja Transact-SQL wykonuje kopię zapasową dziennika w pliku zapasowym o nazwie E:\MyDB1_log.trn:

    BACKUP LOG MyDB1   
      TO DISK = 'E:\MyDB1_log.trn'   
    GO  
    
  6. Przed dołączeniem bazy danych do repliki pomocniczej należy zastosować wymaganą kopię zapasową dziennika (i wszelkie kolejne kopie zapasowe dziennika).

    Na przykład następująca instrukcja Transact-SQL przywraca pierwszy dziennik z C:\MyDB1.trn:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. Jeśli jakiekolwiek dodatkowe kopie zapasowe dziennika występują przed dołączeniem bazy danych do repliki pomocniczej, należy również przywrócić wszystkie te kopie zapasowe dziennika, w sekwencji, do wystąpienia serwera, które hostuje replikę pomocniczą przy użyciu funkcji RESTORE WITH NORECOVERY.

    Na przykład następująca instrukcja Transact-SQL przywraca dwa dodatkowe dzienniki z E:\MyDB1_log.trn:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=2, NORECOVERY  
    GO  
    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=3, NORECOVERY  
    GO  
    

Korzystanie z programu PowerShell

Aby przygotować pomocniczą bazę danych

  1. Jeśli musisz utworzyć najnowszą kopię zapasową podstawowej bazy danych, zmień katalog (cd) na wystąpienie serwera hostujące replikę podstawową.

  2. Użyj polecenia cmdlet Backup-SqlDatabase, aby utworzyć każdą z kopii zapasowych.

  3. Zmień katalog (cd) na wystąpienie serwera hostujące replikę wtórną.

  4. Aby przywrócić kopie zapasowe bazy danych i dziennika dla każdej podstawowej bazy danych, użyj polecenia cmdlet restore-SqlDatabase, określając parametr NoRecovery restore. Jeśli ścieżki plików różnią się między komputerami, które hostują replikę podstawową i docelową repliką pomocniczą, użyj również parametru RelocateFile restore.

    Notatka

    Aby wyświetlić składnię polecenia cmdlet, użyj polecenia cmdlet Get-Help w środowisku PowerShell dla SQL Server. Aby uzyskać więcej informacji, zobacz Get Help SQL Server PowerShell.

  5. Aby ukończyć konfigurację pomocniczej bazy danych, należy dołączyć ją do grupy dostępności. Aby uzyskać więcej informacji, dołącz pomocniczą bazę danych do grupy dostępności (SQL Server).

Aby skonfigurować i używać dostawcy PowerShell programu SQL Server

Przykładowy skrypt i polecenie tworzenia kopii zapasowej i przywracania

Następujące polecenia programu PowerShell tworzą kopię zapasową pełnej bazy danych i dziennika transakcji w zasobie sieciowym oraz przywracają kopie zapasowe z tego zasobu. W tym przykładzie przyjęto założenie, że ścieżka pliku, do której przywrócono bazę danych, jest taka sama jak ścieżka pliku, w której utworzono kopię zapasową bazy danych.

# Create database backup  
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"  
# Create log backup  
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"  
# Restore database backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
# Restore log backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
  

Następne kroki

Aby ukończyć konfigurację pomocniczej bazy danych, dołącz nowo przywróconą bazę danych do grupy dostępności. Aby uzyskać więcej informacji, zobacz Dołączenie baz danych dodatkowych do grupy dostępności (SQL Server).

Zobacz też

omówienie zawsze włączonych grup dostępności (SQL Server)
KOPIA ZAPASOWA (Transact-SQL)
RESTORE Argumenty (Transact-SQL)
RESTORE (Transact-SQL)
Rozwiązywanie problemów z nieudaną operacją Add-File (zawsze włączone grupy dostępności)