Database
 sql >> Baza danych >  >> RDS >> Database

Monitorowanie synchronizacji replik grupy dostępności

W przypadku wdrażania grup dostępności programu SQL Server jednym z ważnych aspektów pomyślnego wdrożenia jest monitorowanie synchronizacji baz danych replik pomocniczych z repliką podstawową. Istnieje wiele sposobów monitorowania synchronizacji replik w grupie dostępności, a ten post pokaże każdą z nich i wyjaśni jej zalety i wady,

Jednym z najłatwiejszych sposobów monitorowania stanu grupy dostępności, każdego z serwerów replik i baz danych dostępności jest wbudowany pulpit nawigacyjny w Management Studio. Jednak domyślny układ pulpitu nawigacyjnego nie zawiera wielu szczegółów i należy go dostosować, aby wyświetlić dodatkowe informacje o serwerach replik oraz bazach danych dostępności. Dodatkowe kolumny można dodać do układu za pomocą linku Dodaj/usuń kolumny na pulpicie nawigacyjnym lub za pomocą menu kontekstowego prawego przycisku myszy na dowolnym z istniejących nagłówków kolumn, jak pokazano poniżej:

Dostosowywanie panelu AG w SSMS

W przypadku baz danych dostępności monitorowanie rozmiaru kolejki wysyłania dziennika (KB), szybkości wysyłania dziennika (KB/s), szacowanej utraty danych (czas), szacowanego czasu odzyskiwania (sekundy) i wydajności synchronizacji (sekundy) pozwoli lepiej zrozumieć o przepływie danych do replik i ogólnej kondycji baz danych dostępności. Na przykład na poniższym zrzucie ekranu zmodyfikowałem konfigurację sieci VM dla SQL03 tak, aby miała większe opóźnienia i niższą przepustowość, co wpływa na synchronizację baz danych:

Tutaj widzimy, że istnieje prawie sześć minut potencjalnej utraty danych dla SQL03 i 505 MB niewysłanego dziennika, który jest wysyłany z szybkością 7 MB/s do drugorzędnego (co w tym przypadku jest drugorzędnym asynchronicznym) . Podczas gdy SQL02 jest obecnie nadrabiany i nie ma utraty danych jako synchroniczne drugorzędne w konfiguracji.

Alternatywą dla pulpitu nawigacyjnego grupy dostępności jest bezpośrednie wysyłanie zapytań do DMV, z którego pulpit nawigacyjny pobiera informacje jako źródło. Poniższe zapytanie pokazuje aktualny stan i metryki synchronizacji dla każdej bazy danych w grupie dostępności:

SELECT 
	ar.replica_server_name, 
	adc.database_name, 
	ag.name AS ag_name, 
	drs.is_local, 
	drs.is_primary_replica, 
	drs.synchronization_state_desc, 
	drs.is_commit_participant, 
	drs.synchronization_health_desc, 
	drs.recovery_lsn, 
	drs.truncation_lsn, 
	drs.last_sent_lsn, 
	drs.last_sent_time, 
	drs.last_received_lsn, 
	drs.last_received_time, 
	drs.last_hardened_lsn, 
	drs.last_hardened_time, 
	drs.last_redone_lsn, 
	drs.last_redone_time, 
	drs.log_send_queue_size, 
	drs.log_send_rate, 
	drs.redo_queue_size, 
	drs.redo_rate, 
	drs.filestream_send_rate, 
	drs.end_of_log_lsn, 
	drs.last_commit_lsn, 
	drs.last_commit_time
FROM sys.dm_hadr_database_replica_states AS drs
INNER JOIN sys.availability_databases_cluster AS adc 
	ON drs.group_id = adc.group_id AND 
	drs.group_database_id = adc.group_database_id
INNER JOIN sys.availability_groups AS ag
	ON ag.group_id = drs.group_id
INNER JOIN sys.availability_replicas AS ar 
	ON drs.group_id = ar.group_id AND 
	drs.replica_id = ar.replica_id
ORDER BY 
	ag.name, 
	ar.replica_server_name, 
	adc.database_name;

Wysyłając zapytania do DMV bezpośrednio w replice podstawowej, można łatwo uzyskać aktualne informacje bez oczekiwania na okres odświeżania pulpitu nawigacyjnego w Management Studio. Było to przydatne kilka razy podczas konsultacji z klientami, którzy mieli awarię łącza między centrami danych lub gdy łączność była niedostępna z powodu konserwacji przez pewien czas, a repliki wtórne są w trakcie nadrabiania zaległości po przywróceniu połączenia .

Ostatnim natywnym narzędziem do monitorowania synchronizacji grupy dostępności jest Monitor wydajności, korzystający z obiektu wydajności SQLServer:Database Replica. Poniższa tabela przedstawia odpowiednie liczniki wydajności i ich opisy z Books Online (https://msdn.microsoft.com/en-us/library/ff878356(v=sql.110).aspx):

Nazwa licznika Opis
Odebranych bajtów pliku/s Ilość danych FILESTREAM odebranych przez replikę pomocniczą dla pomocniczej bazy danych w ciągu ostatniej sekundy.
Odebrano bajty dziennika/s Ilość rekordów dziennika odebranych przez replikę pomocniczą dla bazy danych w ciągu ostatniej sekundy.
Dziennik pozostały do ​​cofnięcia Ilość logowania w kilobajtach pozostałych do zakończenia fazy cofania.
Kolejka wysyłania dziennika Ilość rekordów dziennika w plikach dziennika podstawowej bazy danych, w kilobajtach, które nie zostały jeszcze wysłane do repliki pomocniczej. Ta wartość jest wysyłana do repliki pomocniczej z repliki podstawowej. Rozmiar kolejki nie obejmuje plików FILESTREAM, które są wysyłane do drugorzędnego.
Kolejka odzyskiwania Ilość rekordów dziennika w plikach dziennika repliki wtórnej, która nie została jeszcze wykonana.
Ponów zablokowane/s Ile razy wątek ponawiania jest blokowany na blokadach posiadanych przez czytelników bazy danych.
Ponów pozostałe bajty Ilość dziennika w kilobajtach pozostała do ponownego wykonania, aby zakończyć fazę przywracania.
Ponowne bajty/s Ilość rekordów dziennika przerobionych w dodatkowej bazie danych w ciągu ostatniej sekundy.
Całkowity dziennik wymagający cofnięcia Całkowita liczba kilobajtów dziennika, które muszą zostać cofnięte.

 

Jednym z wyzwań i ograniczeń związanych z używaniem Monitora wydajności do monitorowania środowiska jest to, że obiekt działa tylko w instancji SQL Server, która obsługuje replikę pomocniczą. Oznacza to, że musisz dodać liczniki z każdej repliki pomocniczej do Monitora wydajności, aby uzyskać pełny wgląd w to, co dzieje się ze wszystkimi dodatkowymi bazami danych, gdzie zarówno panel AG Dashboard w Management Studio, jak i zapytanie DMV względem repliki podstawowej zapewniają informacje o wszystkich drugorzędnych bazach danych w jednej lokalizacji.

Jako alternatywę dla wbudowanych funkcji monitorowania synchronizacji grup dostępności możesz również skorzystać z narzędzi innych firm, takich jak SQL Sentry Performance Advisor, który obejmuje monitorowanie grup dostępności jako funkcję standardową. Możesz przeczytać więcej o tej funkcji w tym poście na blogu od Grega Gonzaleza, który jako pierwszy wprowadził tę funkcję w wersji 7.5 produktu.

Panel narzędziowy Performance Advisor AG

Karta Repliki w Performance Advisor umożliwia rozszerzenie każdego wtórnego serwera replik w celu łatwego wyświetlania baz danych i ich aktualnych danych synchronizacji. Domyślny układ macierzy węzłów/grup WSFC w górnej części pulpitu nawigacyjnego zawiera również informacje o stanie kolejki wysyłania repliki podstawowej, stan kolejki ponawiania repliki wtórnej oraz przepływ danych między poszczególnymi serwerami replik. W tym przykładzie widzimy, że kolejka wysyłania dziennika na serwerze podstawowym wysyła obecnie dużą ilość danych z SQL01 do SQL03, w oparciu o szerokość linii między serwerami, po naprawieniu problemów z łącznością między SQL01 i SQL03 w środowisko. Wykres po prawej pokazuje szybkość, z jaką dane są przesyłane z SQL01, wraz z bieżącym rozmiarem kolejki wysyłania dziennika, ponieważ jest to replika wybrana po lewej stronie. Kliknięcie jednego z pozostałych serwerów replik w układzie macierzy węzłów/grup WSFC spowoduje również zmianę wykresu, tak aby odpowiadał metrykom wydajności tej konkretnej repliki po prawej stronie.

Istnieje wiele sposobów monitorowania wydajności synchronizacji danych między serwerami replik w grupie dostępności w programie SQL Server. Wbudowany pulpit nawigacyjny grupy dostępności w Management Studio zawiera bogactwo informacji, które są łatwo dostępne, gdy wiesz, jak dostosować układ, aby wyświetlić najważniejsze informacje na pulpicie nawigacyjnym. Możliwe jest również użycie DMV bezpośrednio z głównego serwera repliki do monitorowania wydajności synchronizacji danych za pomocą Transact-SQL, a narzędzia innych firm, takie jak SQL Sentry, obejmują również monitorowanie synchronizacji danych. Chociaż Monitor wydajności może dostarczyć te same informacje, fakt, że liczniki wydajności są dostępne tylko z wtórnego serwera repliki, sprawia, że ​​uzyskanie pełnego obrazu całego środowiska wymaga trochę więcej pracy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Testowanie instrukcji DML dla OLTP w pamięci

  2. COVID-19 Gotowość w ScaleGrid

  3. Podstawy wyrażeń tabelarycznych, część 1

  4. Różne plany dla identycznych serwerów

  5. Relacyjne bazy danych