Udostępnij za pomocą


Dublowanie bazy danych (SQL Server)

Dotyczy:SQL Server

Ostrzeżenie

Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. W celu zapewnienia wysokiej dostępności zamiast tego użyj zawsze włączonych grup dostępności.

Ważne

Dublowanie baz danych w programie SQL Server to odrębna technologia od dublowania bazy danych usługi Microsoft Fabric. Dublowanie do Fabric zapewnia lepszą wydajność analizy, możliwość ujednolicenia zasobu danych z OneLake w Fabric i otwierania dostępu do danych w formacie Delta Parquet.

Dzięki funkcji mirroringu w usłudze Microsoft Fabric można stale replikować istniejące zasoby danych bezpośrednio do usługi OneLake w Microsoft Fabric, w tym danych z programu SQL Server 2016 lub nowszego, usługi Azure SQL Database, usługi Azure SQL Managed Instance, Cosmos DB, Oracle, Snowflake i nie tylko.

Dublowanie baz danych to rozwiązanie zwiększające dostępność bazy danych programu SQL Server. Dublowanie jest implementowane na podstawie poszczególnych baz danych i działa tylko z bazami danych, które korzystają z pełnego modelu odzyskiwania.

Aby uzyskać informacje na temat obsługi dublowania bazy danych, ograniczeń, wymagań wstępnych, zaleceń dotyczących konfigurowania serwerów partnerskich i zaleceń dotyczących wdrażania dublowania bazy danych, zobacz Wymagania wstępne, ograniczenia i Zalecenia dotyczące dublowania bazy danych.

Zalety dublowania bazy danych

Dublowanie bazy danych to prosta strategia, która oferuje następujące korzyści:

  • Zwiększa dostępność bazy danych.

    W przypadku awarii w trybie wysokiego bezpieczeństwa z automatycznym trybem failover tryb failover szybko przenosi kopię rezerwową bazy danych w trybie online (bez utraty danych). W innych trybach operacyjnych administrator bazy danych ma alternatywę wymuszania usługi (z możliwością utraty danych) do kopii rezerwowej bazy danych. Aby uzyskać więcej informacji, zobacz Przełączanie ról w dalszej części tego tematu.

  • Zwiększa ochronę danych.

    Dublowanie bazy danych zapewnia kompletną lub niemal pełną nadmiarowość danych, w zależności od tego, czy tryb operacyjny jest wysoki, czy wysoki poziom wydajności. Aby uzyskać więcej informacji, zobacz Tryby operacyjne w dalszej części tego tematu.

    Partner dublowania bazy danych uruchomiony w programie SQL Server 2008 (10.0.x) Enterprise lub nowszych wersjach automatycznie próbuje rozwiązać niektóre typy błędów, które uniemożliwiają odczytywanie strony danych. Partner, który nie może odczytać strony, żąda nowej kopii od innego partnera. Jeśli to żądanie powiedzie się, nieczytelna strona zostanie zamieniona na kopię, co zwykle rozwiązuje błąd. Aby uzyskać więcej informacji, zobacz automatyczna naprawa strony (grupy dostępności: dublowanie bazy danych).

  • Zwiększa dostępność produkcyjnej bazy danych podczas uaktualniania.

    Aby zminimalizować przestoje dla dublowanej bazy danych, można sekwencyjnie uaktualnić wystąpienia programu SQL Server hostujące partnerów trybu failover. Spowoduje to przestój tylko jednego trybu failover. Ta forma uaktualnienia jest znana jako uaktualnienie stopniowe. Aby uzyskać więcej informacji, zobacz Uaktualnianie wystąpień dublowanych.

Terminy i definicje dublowania bazy danych

Automatyczne przełączanie w tryb failover

Proces, przez który, gdy serwer główny staje się niedostępny, serwer dublowania przejmuje rolę serwera głównego i przenosi kopię bazy danych w tryb online jako główną bazę danych.

Partnerzy trybu failover

Dwa wystąpienia serwera (serwer główny lub serwer dublowany), które działają jako partnerzy przełączania ról dla dublowanej bazy danych.

Wymuszona usługa

Tryb failover zainicjowany przez właściciela bazy danych po awarii serwera zabezpieczeń, który przesyła usługę do bazy danych dublowania, gdy jest w nieznanym stanie.

Tryb wysokiej wydajności

Sesja dublowania bazy danych działa asynchronicznie i używa tylko głównego serwera i serwera dublowania. Jedyną formą przełączania ról jest wymuszona usługa (z możliwą utratą danych).

Tryb wysokiego bezpieczeństwa

Sesja dublowania bazy danych działa synchronicznie i, opcjonalnie, używa monitora, a także głównego serwera i serwera dublowania.

Ręczne przechodzenie w tryb failover

Tryb failover zainicjowany przez właściciela bazy danych, podczas gdy serwer główny jest nadal uruchomiony, przesyła usługę z głównej bazy danych do dublowanej bazy danych, gdy są w stanie synchronizacji.

Dublowanie bazy danych

Kopia bazy danych, która jest zwykle w pełni zsynchronizowana z główną bazą danych.

Serwer dublowania

W konfiguracji dublowania bazy danych wystąpienie serwera, w którym znajduje się dublowanie bazy danych.

Główna baza danych

W dublowaniu bazy danych baza danych odczytu i zapisu, której rekordy dziennika transakcji są stosowane do kopii bazy danych tylko do odczytu (dublowania bazy danych).

Serwer główny

W przypadku dublowania bazy danych partner, którego baza danych jest obecnie główną bazą danych.

Wykonaj ponownie kolejkę

Odebrano rekordy dziennika transakcji oczekujące na dysku serwera dublowanego.

Role

Serwer główny i serwer dublowania wykonują uzupełniające się role podmiotu zabezpieczeń i dublowania. Opcjonalnie rola monitora jest wykonywana przez trzecie wystąpienie serwera.

Przełączanie ról

Przejęcie głównej roli przez lustro.

Wysyłanie kolejki

Niesprawne rekordy dziennika transakcji, które zgromadziły się na dysku dziennika serwera głównego.

Session

Relacja wykonywana podczas dublowania bazy danych między serwerem głównym, serwerem dublowania i serwerem monitora (jeśli istnieje).

Po rozpoczęciu lub wznowieniu sesji dublowania proces, za pomocą którego rekordy dziennika głównej bazy danych, które zgromadziły się na serwerze głównym, są wysyłane do serwera dublowanego, który zapisuje te rekordy dziennika na dysku tak szybko, jak to możliwe, aby nadrobić zaległości z serwerem głównym.

Bezpieczeństwo transakcji

Właściwość bazy danych specyficznej dla dublowania, która określa, czy sesja dublowania bazy danych działa synchronicznie, czy asynchronicznie. Istnieją dwa poziomy bezpieczeństwa: FULL i OFF.

Witness

Do użycia tylko w trybie wysokiego bezpieczeństwa opcjonalne wystąpienie programu SQL Server, które umożliwia serwerowi dublowania rozpoznawanie, kiedy należy zainicjować automatyczne przejście w tryb failover. W przeciwieństwie do dwóch partnerów trybu failover monitor nie obsługuje bazy danych. Obsługa automatycznego trybu failover jest jedyną rolą monitora.

Omówienie dublowania bazy danych

Dublowanie bazy danych obsługuje dwie kopie pojedynczej bazy danych znajdującej się w różnych wystąpieniach aparatu bazy danych programu SQL Server. Zazwyczaj te wystąpienia znajdują się na komputerach w różnych lokalizacjach. Po uruchomieniu dublowania bazy danych jedno wystąpienie inicjuje relację znaną jako sesja dublowania bazy danych z innym wystąpieniem.

Jedno wystąpienie serwera obsługuje bazę danych klientom ( serwer główny). Inne wystąpienie działa jako serwer rezerwy gorącej lub ciepłej ( serwer dublowania), w zależności od konfiguracji i stanu sesji dublowania. Gdy sesja dublowania bazy danych jest synchronizowana, dublowanie bazy danych zapewnia serwer rezerwy dynamicznej, który obsługuje szybkie przejście w tryb failover bez utraty danych z zatwierdzonych transakcji. Gdy sesja nie jest zsynchronizowana, serwer dublowany jest zazwyczaj dostępny jako ciepły serwer rezerwowy (z możliwością utraty danych).

Serwery zabezpieczeń i dublowania komunikują się i współpracują ze sobą jako partnerzy w sesji dublowania bazy danych. Obaj partnerzy wykonują role uzupełniające w sesji: rolę główną i rolę dublowania. W dowolnym momencie jeden partner wykonuje rolę główną, a drugi partner wykonuje rolę dublowania. Każdy partner jest opisany jako właściciel bieżącej roli. Partner, który jest właścicielem roli głównej, jest znany jako serwer główny, a jego kopia bazy danych jest bieżącą główną bazą danych. Partner, który jest właścicielem roli dublowania, jest znany jako serwer dublowania, a jego kopia bazy danych jest bieżącą bazą danych dublowania. Podczas wdrażania dublowania bazy danych w środowisku produkcyjnym główna baza danych jest produkcyjną bazą danych.

Dublowanie bazy danych polega na jak najszybszym powtórzeniu każdej operacji wstawiania, aktualizacji i usuwania, która występuje w głównej bazie danych na dublowaniu bazy danych. Wykonanie ponownego wykonania polega na wysłaniu strumienia aktywnych rekordów dziennika transakcji do serwera dublowania, który stosuje rekordy dziennika do dublowanej bazy danych w kolejności tak szybko, jak to możliwe. W przeciwieństwie do replikacji, która działa na poziomie logicznym, dublowanie bazy danych działa na poziomie fizycznego rekordu dziennika. Począwszy od programu SQL Server 2008 (10.0.x), serwer główny kompresuje strumień rekordów dziennika transakcji przed wysłaniem go na serwer dublowania. Ta kompresja dziennika występuje we wszystkich sesjach dublowania.

Uwaga / Notatka

Dane wystąpienie serwera może uczestniczyć w wielu współbieżnych sesjach dublowania bazy danych z tymi samymi lub różnymi partnerami. Wystąpienie serwera może być partnerem w niektórych sesjach i monitorem w innych sesjach. Wystąpienie serwera dublowanego musi działać w tej samej wersji programu SQL Server.

W tej sekcji:

Tryby operacyjne

Sesja dublowania bazy danych jest uruchamiana z operacją synchroniczną lub asynchroniczną. W ramach operacji asynchronicznej transakcje są zatwierdzane bez oczekiwania na zapisanie dziennika na dysku przez serwer dublowania, co maksymalizuje wydajność. W ramach operacji synchronicznej transakcja jest zatwierdzana dla obu partnerów, ale kosztem zwiększonego opóźnienia transakcji.

Istnieją dwa tryby operacyjne dublowania. Jeden z nich, tryb wysokiego bezpieczeństwa obsługuje operacje synchroniczne. W trybie wysokiego bezpieczeństwa po rozpoczęciu sesji serwer dublowania synchronizuje bazę danych dublowania wraz z główną bazą danych tak szybko, jak to możliwe. Gdy tylko bazy danych zostaną zsynchronizowane, transakcja zostanie zatwierdzona dla obu partnerów kosztem zwiększonego opóźnienia transakcji.

Drugi tryb operacyjny, tryb wysokiej wydajności, działa asynchronicznie. Serwer dublowania próbuje nadążyć za rekordami dziennika wysyłanymi przez serwer główny. Baza danych dublowania może nieco opóźnić główną bazę danych. Jednak zazwyczaj różnica między bazami danych jest niewielka. Jednak luka może stać się znacząca, jeśli serwer główny jest obciążony dużym obciążeniem lub system serwera dublowanego jest przeciążony.

W trybie wysokiej wydajności, gdy tylko serwer główny wysyła rekord dziennika do serwera dublowania, główny serwer wysyła potwierdzenie do klienta. Nie czeka na potwierdzenie z serwera dublowanego. Oznacza to, że transakcje są zatwierdzane bez oczekiwania na zapisanie dziennika na dysku przez serwer dublowania. Taka jakynchroniczna operacja umożliwia uruchamianie serwera zabezpieczeń z minimalnym opóźnieniem transakcji, przy potencjalnym ryzyku utraty danych.

Wszystkie sesje dublowania bazy danych obsługują tylko jeden serwer główny i jeden serwer dublowania. Ta konfiguracja jest pokazana na poniższej ilustracji.

Zrzut ekranu przedstawiający partnerów w sesji dublowania bazy danych.

Tryb wysokiego bezpieczeństwa z automatycznym trybem failover wymaga trzeciego wystąpienia serwera znanego jako monitor. W przeciwieństwie do dwóch partnerów monitor nie obsługuje bazy danych. Monitor obsługuje automatyczną pracę w trybie failover, sprawdzając, czy serwer główny działa i czy działa. Serwer dublowania inicjuje automatyczne przełączanie w tryb failover tylko wtedy, gdy dublowanie i monitor pozostają ze sobą połączone po odłączeniu obu z serwera głównego.

Poniższa ilustracja przedstawia konfigurację zawierającą monitor.

Zrzut ekranu przedstawiający sesję dublowania zawierającą monitor.

Aby uzyskać więcej informacji, zobacz Przełączanie ról w dalszej części tego tematu.

Uwaga / Notatka

Ustanowienie nowej sesji dublowania lub dodanie monitora do istniejącej konfiguracji dublowania wymaga, aby wszystkie zaangażowane wystąpienia serwera uruchamiały tę samą wersję programu SQL Server. Jednak w przypadku uaktualniania do programu SQL Server 2008 (10.0.x) lub nowszej wersji mogą się różnić wersje zaangażowanych wystąpień. Aby uzyskać więcej informacji, zobacz Uaktualnianie wystąpień dublowanych.

Tryby bezpieczeństwa i działania transakcji

To, czy tryb operacyjny jest asynchroniczny, czy synchroniczny, zależy od ustawienia bezpieczeństwa transakcji. Jeśli do konfigurowania dublowania bazy danych używasz wyłącznie programu SQL Server Management Studio, ustawienia bezpieczeństwa transakcji są konfigurowane automatycznie po wybraniu trybu operacji.

Jeśli używasz Transact-SQL do konfigurowania dublowania bazy danych, musisz zrozumieć, jak ustawić bezpieczeństwo transakcji. Bezpieczeństwo transakcji jest kontrolowane przez SAFETY właściwość instrukcji ALTER DATABASE . W bazie danych, która jest dublowana, SAFETY jest pełna lub OFF.

  • SAFETY Jeśli opcja jest ustawiona na PEŁNA, operacja dublowania bazy danych jest synchroniczna po początkowej fazie synchronizacji. Jeśli monitor jest ustawiony w trybie wysokiego bezpieczeństwa, sesja obsługuje automatyczne przechodzenie w tryb failover.

  • Jeśli opcja jest ustawiona SAFETY na OFF, operacja dublowania bazy danych jest asynchroniczna. Sesja jest uruchamiana w trybie wysokiej wydajności, a WITNESS opcja powinna również mieć wartość OFF.

Aby uzyskać więcej informacji, zobacz Tryby operacyjne dublowania bazy danych.

Przełączanie ról

W kontekście sesji dublowania bazy danych role podmiotu zabezpieczeń i dublowania są zwykle wymienne w procesie znanym jako przełączanie ról. Przełączanie ról obejmuje przeniesienie roli głównej na serwer dublowania. W przypadku przełączania ról serwer dublowania działa jako partner trybu failover dla serwera głównego. Po przełączeniu roli serwer dublowania przejmuje rolę główną i przenosi kopię bazy danych w tryb online jako nową główną bazę danych. Poprzedni serwer główny, jeśli jest dostępny, przyjmuje rolę dublowania, a jego baza danych staje się nową bazą danych dublowania. Potencjalnie role mogą przełączać się tam i z powrotem wielokrotnie.

Istnieją następujące trzy formy przełączania ról.

  • Automatyczne przełączanie awaryjne

    Wymaga to trybu wysokiego bezpieczeństwa oraz obecności serwera dublowania i monitora. Baza danych musi być już zsynchronizowana, a monitor musi być połączony z serwerem dublowania.

    Rolą monitora jest sprawdzenie, czy dany serwer partnerski działa i działa. Jeśli serwer dublowania utraci połączenie z serwerem głównym, ale monitor jest nadal połączony z serwerem głównym, serwer dublowania nie inicjuje trybu failover. Aby uzyskać więcej informacji, zobacz Monitor dublowania bazy danych.

  • Ręczne przechodzenie w tryb failover

    Wymaga to trybu wysokiego bezpieczeństwa. Partnerzy muszą być ze sobą połączeni, a baza danych musi być już zsynchronizowana.

  • Wymuszona usługa (z możliwą utratą danych)

    W trybie wysokiej wydajności i trybie wysokiego bezpieczeństwa bez automatycznego trybu failover wymuszanie usługi jest możliwe, jeśli serwer główny uległ awarii, a serwer dublowany jest dostępny.

    Ważne

    Tryb wysokiej wydajności jest przeznaczony do uruchamiania bez monitora. Jeśli jednak monitor istnieje, wymuszanie usługi wymaga, aby monitor był połączony z serwerem dublowania.

W każdym scenariuszu przełączania ról, gdy tylko nowa główna baza danych pojawi się w trybie online, aplikacje klienckie mogą szybko odzyskać, ponownie łącząc się z bazą danych.

Sesje współbieżne

Dane wystąpienie serwera może uczestniczyć w wielu współbieżnych sesjach dublowania bazy danych (raz na dublowaną bazę danych) z tymi samymi lub różnymi wystąpieniami serwera. Często wystąpienie serwera służy wyłącznie jako partner lub monitor we wszystkich sesjach dublowania bazy danych. Jednak ponieważ każda sesja jest niezależna od innych sesji, wystąpienie serwera może działać jako partner w niektórych sesjach i jako monitor w innych sesjach. Rozważmy na przykład następujące cztery sesje między trzema wystąpieniami serwera (SSInstance_1, SSInstance_2, i SSInstance_3). Każde wystąpienie serwera służy jako partner w niektórych sesjach i jako monitor w innych:

Wystąpienie serwera Sesja dla bazy danych A Sesja bazy danych B Sesja bazy danych C Sesja bazy danych D
SSInstance_1 Witness Wspólnik Wspólnik Wspólnik
SSInstance_2 Wspólnik Witness Wspólnik Wspólnik
SSInstance_3 Wspólnik Wspólnik Witness Witness

Na poniższej ilustracji przedstawiono dwa wystąpienia serwera, które uczestniczą jako partnerzy w dwóch sesjach dublowania. Jedna sesja dotyczy bazy danych o nazwie Db_1, a druga sesja dotyczy bazy danych o nazwie Db_2.

Zrzut ekranu przedstawiający dwa wystąpienia serwera w dwóch współbieżnych sesjach.

Każda z baz danych jest niezależna od innych. Na przykład wystąpienie serwera może początkowo być serwerem dublowania dla dwóch baz danych. Jeśli jedna z tych baz danych zostanie przełączona w tryb failover, wystąpienie serwera stanie się głównym serwerem bazy danych w trybie failover, pozostając serwerem dublowania dla innej bazy danych.

W innym przykładzie rozważ wystąpienie serwera, które jest głównym serwerem dla co najmniej dwóch baz danych działających w trybie wysokiego bezpieczeństwa z automatycznym trybem failover, jeśli wystąpienie serwera ulegnie awarii, wszystkie bazy danych automatycznie przejdą w tryb failover do odpowiednich dublowania baz danych.

Podczas konfigurowania wystąpienia serwera do obsługi zarówno jako partnera, jak i monitora, upewnij się, że punkt końcowy dublowania bazy danych obsługuje obie role (aby uzyskać więcej informacji, zobacz Punkt końcowy dublowania bazy danych (SQL Server)). Upewnij się również, że system ma wystarczające zasoby, aby zmniejszyć rywalizację o zasoby.

Uwaga / Notatka

Ponieważ dublowane bazy danych są niezależne od siebie, bazy danych nie mogą przejść w tryb failover jako grupa.

Połączenia klienta

Obsługa połączenia klienta dla sesji dublowania bazy danych jest zapewniana przez dostawcę danych microsoft .NET dla programu SQL Server. Aby uzyskać więcej informacji, zobacz Łączenie klientów z sesją dublowania bazy danych (SQL Server).

Wpływ wstrzymania sesji w dzienniku transakcji zabezpieczeń

W dowolnym momencie właściciel bazy danych może wstrzymać sesję. Wstrzymanie zachowuje stan sesji podczas usuwania dublowania. Po wstrzymaniu sesji serwer główny nie wysyła żadnych nowych rekordów dziennika do serwera dublowania. Wszystkie te rekordy pozostają aktywne i gromadzą się w dzienniku transakcji głównej bazy danych. Dopóki sesja dublowania bazy danych nie zostanie wstrzymana, dziennik transakcji nie może zostać obcięty. W związku z tym, jeśli sesja dublowania bazy danych jest wstrzymana zbyt długo, dziennik może się wypełnić.

Aby uzyskać więcej informacji, zobacz Wstrzymanie i wznawianie dublowania bazy danych (SQL Server).

Konfigurowanie sesji dublowania bazy danych

Przed rozpoczęciem sesji dublowania właściciel bazy danych lub administrator systemu musi utworzyć bazę danych dublowania, skonfigurować punkty końcowe i identyfikatory logowania, a w niektórych przypadkach utworzyć i skonfigurować certyfikaty. Aby uzyskać więcej informacji, zobacz Konfigurowanie dublowania bazy danych (SQL Server).

Współdziałanie i współistnienie z innymi funkcjami aparatu bazy danych

Dublowanie bazy danych może być używane z następującymi funkcjami lub składnikami programu SQL Server.

W tym dziale

Wymagania wstępne, ograniczenia i zalecenia dotyczące dublowania bazy danych Opisuje wymagania wstępne i zalecenia dotyczące konfigurowania dublowania bazy danych.

Tryby operacyjne dublowania bazy danych Zawiera informacje o synchronicznych i asynchronicznych trybach operacyjnych dla sesji dublowania bazy danych oraz o przełączaniu ról partnerów podczas sesji dublowania bazy danych.

Monitor dublowania bazy danych Opisuje rolę monitora w dublowaniu bazy danych, sposób używania jednego monitora w wielu sesjach dublowania, zaleceniach dotyczących oprogramowania i sprzętu dla świadków oraz roli monitora w automatycznym przejściu w tryb failover. Zawiera również informacje o dodawaniu lub usuwaniu monitora.

Przełączanie roli podczas sesji dublowania bazy danych (SQL Server) Zawiera informacje na temat przełączania ról partnerów podczas sesji dublowania bazy danych, w tym automatycznego trybu failover, ręcznego przejścia w tryb failover i wymuszonej usługi (z możliwością utraty danych). Zawiera również informacje na temat szacowania przerwy w działaniu usługi podczas przełączania roli.

Możliwe błędy podczas dublowania bazy danych Omówienie problemów fizycznych, systemów operacyjnych i programu SQL Server, w tym błędów twardych i błędów miękkich, które mogą powodować awarię w sesji dublowania bazy danych. Omówienie sposobu reagowania mechanizmu przekroczenia limitu czasu dublowania na błędy miękkie.

Punkt końcowy dublowania bazy danych (SQL Server) Omówienie funkcji punktu końcowego dublowania bazy danych.

Konfigurowanie dublowania bazy danych (SQL Server) Zawiera tematy dotyczące wymagań wstępnych, zaleceń i kroków konfigurowania dublowania bazy danych.

Łączenie klientów z sesją dublowania bazy danych (SQL Server) Zawiera tematy obejmujące atrybuty parametrów połączenia klienta oraz algorytmy łączenia i ponownego łączenia klienta z dublowaną bazą danych.

Wstrzymanie i wznawianie dublowania bazy danych (SQL Server) Omówienie tego, co się stanie, gdy dublowanie bazy danych jest wstrzymane, w tym wpływ na obcinanie dziennika transakcji i zawiera opisy dotyczące sposobu wstrzymania i wznowienia dublowania bazy danych.

Usuwanie dublowania bazy danych (SQL Server) Omówienie wpływu usuwania dublowania i zawiera opisy sposobu zakończenia sesji

Monitorowanie dublowania bazy danych (SQL Server) Zawiera informacje o używaniu monitora dublowania bazy danych lub procedur składowanych dbmmonitor do monitorowania dublowania bazy danych lub sesji.

Zadania konfiguracyjne

Korzystanie z programu SQL Server Management Studio

Korzystanie z języka Transact-SQL

Korzystanie z programu Transact-SQL lub programu SQL Server Management Studio

Zadania administracyjne

Transact-SQL

SQL Server Management Studio