dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbook #22
mysql
PerformanceSEV2 · DEGRADATION15-30 dakika / 15-30 minsSUPER / CONNECTION_ADMIN / RELOAD / REPLICATION CLIENT

MySQL InnoDB Redo Log Waits: Log Buffer and Storage Bottlenecks

Distinguishes log-buffer limits from storage pressure behind rising Innodb_log_waits without compromising durability.

Related Metrics:M22
Related Scripts:S39S27
#innodb#redo-log#innodb_log_waits#disk-io

Operational Safety & Risk Notice

This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.

🟢 Salt Okunur (Read-Only)·🟡 Geri Alınabilir (Reversible)·🔴 Yüksek Etkili / Geri Alınamaz (High Impact)

1. Symptom & Signals

- M22 (`Innodb_log_waits`) artıyor, commit/yazma gecikmeleri yükseliyor. Sayaç kümülatif olduğu için farkını hesaplayın.

2. Business & Technical 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. Diagnosis & Root-Cause Analysis

🟢 Read-Only1. Aynı sunucuda iki zaman noktasında ölçün:
sql
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.

🟢 Read-Only2. S39 ile I/O yoğun dosyaları inceleyin; OS `iostat -x` ile redo disk yazma gecikmesini ve boş alanını doğrulayın. S27 ile buffer pool isabetini ve bellek baskısını karşılaştırın.
🟢 Read-Only3. Büyük transaction, bulk import ve eşzamanlı yazma artışı aynı zamana mı rastlıyor; sorgu ve uygulama yayınlarını denetleyin.

4. Remediation & Action Plan

🟡 Reversible1. Büyük yazma batch'lerini küçültün ve hız sınırlaması koyun; disk kapasitesi/IOPS yetersizse güvenli kapasite artırımı planlayın.
🟡 Reversible2. `innodb_log_buffer_size` değerini mevcut değer, büyük transaction hacmi ve RAM payına göre yapılandırmada artırıp **kontrollü yeniden başlatma** ile uygulayın. 5.7/8.0 sürümünde dinamik olduğunu varsaymayın; `SHOW GLOBAL VARIABLES` ve değişken dokümantasyonunu doğrulayın.
🟡 Reversible3. 8.0.30+ sürümde redo kapasitesini artırmak gerekebilir (`SET GLOBAL innodb_redo_log_capacity = <olculmus_bayt>;`), fakat bunu buffer beklemesi için otomatik reçete saymayın: checkpoint baskısını ve diski ayrıca kanıtlayın.
🔴 HIGH RISK / IRREVERSIBLE4. Primary'de `innodb_flush_log_at_trx_commit=2` veya `sync_binlog=0` ile dayanıklılığı gevşetmeyi varsayılan acil çözüm yapmayın; crash sonrası onaylanmış işlemler kaybolabilir.

5. Verification & Health Checks

- 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. Rollback & Contingency Plan

- 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.

More MYSQL Runbooks