MySQL InnoDB History List Sürekli Büyüyor: Purge Engellerini Bulma
Uzun transaction, replica okuması ve purge kapasitesi sorunlarını ayırarak undo birikimini güvenli biçimde azaltır.
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
- M17 (`trx_rseg_history_len`) aralıksız büyür; undo/disk tüketimi ve sorgu gecikmesi artar.
2. Etki / Impact
Purge gecikmesi nedeniyle eski satır sürümleri birikir; alan ve I/O yükü artar. Sırf yüksek sayı değil, büyüme hızı ve kapasite riski önemlidir.
3. Teşhis / Diagnosis
SELECT trx_id, trx_started, TIMESTAMPDIFF(SECOND,trx_started,NOW()) AS age_s,
trx_state, trx_mysql_thread_id, trx_rows_locked, LEFT(trx_query,160) AS sql_text
FROM information_schema.innodb_trx ORDER BY trx_started LIMIT 20;
SELECT name, count FROM information_schema.innodb_metrics
WHERE name = 'trx_rseg_history_len';Metrik etkin değilse `SHOW ENGINE INNODB STATUS\G` içindeki `History list length` değerine bakın. Tek seferlik fotoğraf yerine birkaç aralıklı örnek kullanın.
4. Müdahale / Response
5. Doğrulama / Verification
- M17 artışı durur, ardından kademeli düşer; disk doluluk eğilimi ve gecikme iyileşir.
- Yeni uzun açık transaction oluşmaz; replica'ların her birinde ayrı ölçüm yapılır.
6. Geri Alma / Rollback
- Yazma işinin hız sınırı eski haline kontrollü döndürülür; bitirilen transaction geri getirilemez, uygulama gerekirse yeniden dener.
- Purge ayarı değiştiyse eski değeri ve yapılandırma dosyasını geri alın.
Mühendislik Triadı: Doğrudan Teşhis Scriptleri
Bu runbook kriz müdahalesinde darboğazı tespit etmek için önerilen hazır SQL / Shell scriptleri:
MySQL InnoDB Kilit Beklemelerini ve Bloklayan Sorguyu Bulma
sys şeması ile bekleyen ve bloklayan oturumları, kilit modlarıyla birlikte gösterir. Hangi işlemin hangisini beklettiğini tek sorguda çözer.
MySQL'de Uzun Süredir Açık InnoDB Transaction'ları
Açık transaction'ları yaşlarına, kilitledikleri satırlara ve son sorgularına göre listeler. Purge'ı engelleyen ve history list'i şişiren işlemleri bulur.