Mengapa kedua HADR DMV ini melaporkan status yang berbeda?

8

SQL Server 2012 (11.0.5058.0) Edisi Perusahaan

Kami memiliki 8 Grup yang Tersedia dalam kluster 2 (HA) +1 (DR) dan DMV pemantauan kami melaporkan hasil yang membingungkan saya. 6 Grup yang Tersedia dikonfigurasi untuk HA dan DR, 1 dikonfigurasi untuk HA saja, dan 1 dikonfigurasi untuk DR saja.

Masing-masing dari 6 Grup Ketersediaan HA / DR memiliki "SQLB" sebagai primer dan "SQLA" sebagai replika HA sekunder (sinkron) dan "SQLC" sebagai replika sekunder (async).

Di kedua sekunder:

SELECT dhags.group_id, dhags.synchronization_health_desc
FROM sys.dm_hadr_availability_group_states dhags

melaporkan bahwa semua kesehatan sinkronisasi replikasi Grup yang Ada adalah NOT_HEALTHYdan

select replica_id,synchronization_health_desc
from sys.dm_hadr_availability_replica_states

melaporkan bahwa semua replika memiliki kesehatan sinkronisasi HEALTHY.

Replika utama melaporkan semua Grup yang Tersedia dan replika dengan kesehatan sinkronisasi HEALTHY.

Sementara saya mengerti bahwa satu laporan tentang kesehatan sinkronisasi replika dan laporan lainnya tentang kesehatan sinkronisasi AG, tampaknya logis bagi saya bahwa jika keadaan yang lebih granular (AG) tidak sehat, itu akan memengaruhi kesehatan keseluruhan dari konteks yang lebih luas (replika) . Saya tidak dapat menemukan dokumentasi MSDN yang menjelaskan bagaimana kesehatan ditentukan pada setiap level.

Mengapa secondaries melaporkan NOT_HEALTHYkesehatan tersinkronisasi Grup, tetapi HEALTHYuntuk kesehatan sinkronisasi replika, dan mengapa ini berbeda dari laporan primer?

swasheck
sumber
Bisakah Anda mengonfirmasi bahwa Anda hanya melihat NOT_HEALTHYreplika ASYNC sekunder?
Kin Shah
saya melihat NOT_HEALTHYdi kedua replika SYNC dan ASYNC.
swasheck

Jawaban:

5

Sayangnya, status sys.dm_hadr_avilities_replica bukan merupakan indikator kesehatan replika yang dapat diandalkan. Inilah item Connect di salah satu bug yang kami temui di mana DMV berhenti menyegarkan - catat dalam komentar yang mencatat log_send_queue_size di DMV sys.dm_hadr_database_replica_states menunjukkan 0 bahkan ketika ada data log yang akan dikirim.

Perhatikan bahwa item Connect ditandai sebagai Won't Fix. Trombon sedih.

Brent Ozar
sumber
Tautan mencapai halaman yang mengatakan MS Connect telah pensiun. T&J ini adalah tahun 2015. Ini empat tahun kemudian. Saya di sini karena saya melihat hal yang sama dengan OP. Saya kira mereka berarti "tidak akan memperbaiki". Itu agak timpang. Di sisi lain - ada yang tahu skrip yang bagus untuk melaporkan kesehatan dan konfigurasi AG, dari grup hingga replika ke tingkat sinkronisasi basis data?
youcantryreachingme
PS. Bagi saya, sys.dm_hadr_availability_group_states.synchronization_health_desc(yang saya mengerti melaporkan kesehatan seluruh kelompok) melaporkan NOT_HEALTHYsekunder, tetapi HEALTHYprimer (3 replika). Documents menggambarkan col sebagai "rollup sinkronisasi_kesehatan semua replika ketersediaan dalam grup ketersediaan". Ini menunjukkan perbedaan dalam sistem tanpa melihat sys.dm_hadr_avilities_replica_states (yang mungkin berasal dari tempat data digulung).
youcantryreachingme
@youcantryreachingme pertanyaan yang berbeda - taruhan terbaik Anda akan memulai pertanyaan baru
Brent Ozar