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.