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

MySQL InnoDB Buffer Pool Hit Ratio Dropped: Memory and I/O Triage

Distinguishes cache warm-up, large scans and insufficient RAM behind a lower hit ratio; evaluates queries and memory settings safely.

Related Metrics:M16
Related Scripts:S27S40S25
#innodb#buffer-pool#cache-hit#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

- M16 uyarı eşiğinin altında; fiziksel okuma ve sorgu gecikmesi artıyor. Tek bir düşük oran, özellikle yeniden başlatma sonrası, olay kanıtı değildir.

2. Business & Technical Impact

Disk okuma yükü ve p95/p99 sorgu gecikmesi artabilir; bellek taşması veya OS swap daha ağır kesintiye yol açabilir.

3. Diagnosis & Root-Cause Analysis

🟢 Read-Only1. S27 ile sayaçları ve buffer pool boyutunu alın:
sql
SHOW GLOBAL STATUS WHERE Variable_name IN
 ('Innodb_buffer_pool_read_requests','Innodb_buffer_pool_reads','Uptime');
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';

5-10 dakika arayla iki örnek alın. Aralık isabeti = `1 - ΔInnodb_buffer_pool_reads / ΔInnodb_buffer_pool_read_requests`. Kümülatif başlangıç oranı geçici bozulmaları gizler.

🟢 Read-Only2. Bellek enstrümantasyonu açıksa S40 ile bileşen tüketimini, OS'te available RAM/swap ve disk gecikmesini ölçün. Sunucu yeniden başlamış mı kontrol edin.
🟢 Read-Only3. S25'te yoğun digest'leri ve `rows_examined/rows_sent` oranını inceleyin; büyük raporlamalar/seq scan yükü cache'i yerinden ediyor olabilir.

4. Remediation & Action Plan

🟡 Reversible1. Ani tablo taraması yapan raporu yavaşlatın veya başka replica'da çalıştırın. Sorguya uygun indeks ve seçici koşullar planlayın.
🟡 Reversible2. RAM payı ölçülmüşse `innodb_buffer_pool_size` değerini küçük adımlarla artırın (örnek değer değil, ölçülmüş hedef kullanın). Dinamik değişiklik 5.7/8.0'da desteklenir, ancak yeniden boyutlandırma zaman alır ve bellek baskısı yaratabilir:
sql
SET GLOBAL innodb_buffer_pool_size = <olculmus_bayt_degeri>;

Yeniden başlatmada kalıcı olması için 5.7'de yapılandırma dosyası, 8.0'da uygun sürümde `SET PERSIST` veya yapılandırma yönetimi gerekir.

🔴 HIGH RISK / IRREVERSIBLE3. OS belleği yetersizken buffer pool'u artırmayın; swap/OOM, mevcut düşük isabetten çok daha ağırdır.

5. Verification & Health Checks

- İki örnek üzerinden hesaplanan isabet oranı yükselirken fiziksel okuma hızı ve p95 gecikmesi düşer.

- OS available RAM, swap, MySQL proses RSS ve replica gecikmesi stabil kalır.

6. Rollback & Contingency Plan

- Önceki bayt değerini `SET GLOBAL innodb_buffer_pool_size = <onceki_bayt_degeri>;` ile geri alın; kalıcı ayarı da düzeltin.

- Durdurulan raporu kontrollü hızla tekrar açın; yapılan indeks değişikliğini ayrıca değişiklik planıyla geri alın.

More MYSQL Runbooks