MySQL InnoDB Redo Log Beklemeleri: Log Buffer ve Disk Darboğazı
Innodb_log_waits artışının log buffer sınırı mı yoksa depolama baskısı mı olduğunu ayırır; veri dayanıklılığını bozmadan seçenekleri sıralar.
Operasyonel Güvenlik ve Risk Uyarısı
Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.
1. Belirti / Symptom
- M22 (`Innodb_log_waits`) artıyor, commit/yazma gecikmeleri yükseliyor. Sayaç kümülatif olduğu için farkını hesaplayın.
2. Etki / Impact
Yazmalar bekler; yoğun yükte uygulama timeout'ları ve bağlantı birikimi gelişebilir. `Innodb_log_waits`, redo **log buffer'ın dolup flush beklenmesini** sayar, tek başına redo dosyasının dolduğunu göstermez.
3. Teşhis / Diagnosis
SHOW GLOBAL STATUS WHERE Variable_name IN
('Innodb_log_waits','Innodb_os_log_written','Innodb_os_log_fsyncs','Uptime');
SHOW GLOBAL VARIABLES WHERE Variable_name IN
('innodb_log_buffer_size','innodb_flush_log_at_trx_commit','sync_binlog','innodb_redo_log_capacity','innodb_log_file_size');8.0.30+ `innodb_redo_log_capacity`, daha eski sürümlerde `innodb_log_file_size`/`innodb_log_files_in_group` geçerlidir.
4. Müdahale / Response
5. Doğrulama / Verification
- M22 artış hızı normale iner; commit p95, redo disk gecikmesi ve uygulama hata oranı iyileşir.
- Dayanıklılık ayarları başlangıç değerlerinde ve replica gecikmesi normaldir.
6. Geri Alma / Rollback
- Log buffer boyutu değiştiyse eski yapılandırmayı geri yükleyip planlı yeniden başlatın.
- 8.0.30+ dinamik redo kapasitesi değiştirildiyse önceki değere dönmeden önce mevcut redo kullanımı ve disk boşluğunu kontrol edin.