SQL Server Always On AG işletimi (Windows ve Linux)
SQL ServerSeviye: İleriSüre: 15–90 dk (senaryoya göre)Kurulum değil, kurulu bir Always On Availability Group'un günlük işletimi ve arıza senaryoları: sağlık kontrolü, gecikme ve log büyümesi teşhisi, planlı failover, zorunlu failover (FORCE_FAILOVER_ALLOW_DATA_LOSS) ve sonrası, veri akışını durdurma/sürdürme, senkron/asenkron mod, veritabanı ekleme (automatic seeding ya da backup/restore), replica ekleme/çıkarma, read-only routing ve listener değişiklikleri. Windows'ta WSFC, Linux'ta Pacemaker (pcs) komutlarıyla.
Ne yapacağınızı senaryo kartından seçin; hata kodunu (ör. 9002, 35264, 41142) katalog aramasına yazarak da doğrudan ilgili senaryoyu açabilirsiniz. AG henüz yoksa: AG (Windows) ya da AG (Linux).
Yapı: 2–9 replica'lı AG (Windows WSFC ya da Linux Pacemaker)
Senaryolar
- AG sağlık kontrolü (dashboard sorguları) — Her şey yolunda mı? Replica / veritabanı durumu, failover'a hazırlık, cluster ve son rol değişimleri. Hiçbir şeyi değiştirmez.
- Secondary geride kalıyor / log dosyası büyüyor (gecikme teşhisi) — send/redo kuyruğu büyüyor, secondary'de veri eski, primary'de log dolmak üzere (log_reuse_wait = AVAILABILITY_REPLICA) ya da commit'ler yavaş (HADR_SYNC_COMMIT).
- Planlı failover (switchover, veri kaybı yok) — Bakım, patch ya da test için primary'yi senkron ve SYNCHRONIZED bir secondary'ye taşır; birkaç saniye kesinti, veri kaybı yok.
- Primary kayıp: zorunlu failover (FORCE_FAILOVER_ALLOW_DATA_LOSS) — Primary (ya da tüm site / cluster quorum) kayıp ve beklenemez: veri kaybı göze alınarak bir secondary primary yapılır; sonra veri karşılaştırılır ve diğer replica'lar sürdürülür.
- Veri akışını durdur / sürdür (SUSPEND / RESUME) — Secondary'ye veri gönderimini geçici durdurmak (ağ bakımı, toplu işlem) ya da askıda kalmış (SUSPENDED) veritabanını sürdürmek.
- Senkron / asenkron modu değiştir — Bir replica'yı SYNCHRONOUS_COMMIT ↔ ASYNCHRONOUS_COMMIT yapmak (uzak site, yavaş ağ, DR tatbikatı) ve commit korumasını (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT) ayarlamak.
- AG'ye veritabanı ekle (automatic seeding ya da backup/restore) — Yeni ya da mevcut bir veritabanını AG'ye almak: küçük/orta veritabanlarında automatic seeding, büyük veritabanlarında ya da yavaş ağda yedekten.
- Replica (node) ekle — AG'ye yeni bir secondary eklemek: node cluster'a katılır, endpoint hazırlanır, ADD REPLICA + JOIN, veritabanları seeding ile gelir.
- Replica (node) çıkar — Kalıcı olarak kapatılacak ya da yeniden kurulacak bir secondary'yi AG'den ve cluster'dan çıkarmak.
- Okuma yönlendirmesi (read-only routing) — ApplicationIntent=ReadOnly bağlantıları listener üzerinden okunabilir secondary'lere yönlendirmek (raporlama yükünü primary'den almak).
- Listener oluştur ya da değiştir (IP, port) — Listener yoksa oluşturmak, portunu değiştirmek ya da (Windows) ikinci alt ağ için IP eklemek.
Başlamadan önce
- Her node'da sqlcmd (/opt/mssql-tools18/bin/sqlcmd) ve … sysadmin; root yetkisi (pcs). Parola: read -rsp 'Parola: ' SQLCMDPASSWORD; export SQLCMDPASSWORD ve sudo --preserve-env=SQLCMDPASSWORD bash <betik>.sh.
- PowerShell yönetici olarak, SQL Server'da sysadmin ve WSFC'de yönetici bir domain hesabıyla açıldı; sqlcmd ve FailoverClusters modülü var.
- Formdaki replica listesinin 1. satırı şu anki primary (sağlık kontrolünün ilk sorgusuyla doğrulayın); adımlar bu sıraya göre doğru node'a yerleşir.
- Değişiklik penceresi onaylandı ve uygulama ekibi bilgilendirildi…: listener birkaç saniye kesilir, açık transaction'lar geri alınır……: port/IP değişikliği bağlantı dizelerini etkiler….
- Zorunlu failover kararı yetkili kişi tarafından verildi ve veri kaybı kabul edildi: primary'ye ulaşılamıyor ve makul sürede geri gelmeyecek. Primary geri gelebiliyorsa beklemek ya da planlı failover her zaman daha iyidir.
Rehberin aşamaları
- AG sağlık kontrolü — AG panosu: replica'lar, veritabanları, failover hazırlığı · Cluster durumu (WSFC) · Cluster durumu (Pacemaker) · Son rol değişimleri (AlwaysOn_health)
- Gecikme ve log büyümesi teşhisi — Teşhis: kuyruklar, hızlar ve tahmini yetişme süresi (primary) · Teşhis: commit beklemeleri (primary) · Teşhis: redo engelleniyor mu? (secondary'lerde) · Çözüm seçenekleri ve log kontrolü
- Planlı failover — Teşhis: hedef failover'a hazır mı? (…) · Güvenlik ağı: uzun transaction ve çalışan job var mı? (primary) · Failover: … primary olsun (T-SQL) · Failover: … primary olsun (pcs) · Doğrula: yeni primary ve listener
- Zorunlu failover (veri kaybı olabilir) — Teşhis: hedefin durumu ve olası veri kaybı (…) · WSFC quorum'u zorla başlat (…) · Pacemaker'ın AG kaynağını yönetmesini durdur (…) · Zorunlu failover: … primary olsun · Doğrula: yeni primary açık, diğerleri SUSPENDED · Kaybolan veriyi kurtarmak için eski primary'de snapshot al (…, geri geldiğinde) …
- Veri akışını durdur / sürdür — Teşhis: askıdaki veritabanları ve nedeni · …Veri akışını durdur (SUSPEND)…Veri akışını sürdür (RESUME)… · Doğrula ve izle
- Availability mode değişikliği — Teşhis: mevcut modlar ve commit koruması · … → … · Commit korumasını ayarla (Windows) · Commit korumasını ayarla (Pacemaker) · Doğrula
- AG'ye veritabanı ekle — Teşhis: veritabanı AG'ye uygun mu? (primary) · Hazırla: FULL recovery ve yedek (primary) · Replica'ları manuel seeding'e al (primary) · Veritabanını AG'ye ekle (primary) · Seeding'i izle (primary) · Secondary'de yedekten hazırla (NORECOVERY): … …
- Replica ekle — Yeni node'u WSFC'ye ekle (primary) · Always On'u etkinleştir (yeni node) · Endpoint'i oluştur ve yetki ver (yeni node) · Yeni node'u hazırla: HA ajanı, Always On, cluster yazılımları · Endpoint sertifikasını yeni node'a kopyala (primary) · Sertifika, endpoint ve Pacemaker login'i (yeni node) …
- Replica çıkar — Teşhis: çıkarılacak replica ve kalan yapı · Node'u Pacemaker cluster'ından çıkar (primary) · Replica'yı AG'den çıkar (primary) · Node'u WSFC'den çıkar (isteğe bağlı) · Çıkarılan node'daki RESTORING veritabanlarını temizle (…)
- Read-only routing — Teşhis: okuma izinleri ve mevcut routing · Routing URL'lerini ve listeleri tanımla (primary) · Doğrula: routing listesi · Test: ReadOnly bağlantı nereye gidiyor? · Test: ReadOnly bağlantı nereye gidiyor?
- Listener — Teşhis: mevcut listener'lar · Virtual IP kaynağını ve constraint'leri oluştur (Pacemaker) · …Listener'ı oluştur…Listener portunu değiştir…Listener'a IP ekle… (primary) · Firewall ve DNS ayarları · Firewall ayarları · Doğrula: listener üzerinden bağlantı