MariaDB'de aktif sorguları ve işlemleri düzenli olarak izlemek, performans sorunlarını tespit etmek ve olası hataları önlemek açısından kritik öneme sahiptir. Bu noktada, otomatik olarak processlist komutunu çalıştırıp sonuçları analiz eden bir script geliştirmek, sistem yöneticilerinin işini büyük ölçüde kolaylaştırabilir.
Bir script yazarak, her belli aralıklarla
SHOW PROCESSLIST komutunu çalıştırmak ve sonuçları belirli kriterlere göre filtrelemek, oldukça faydalı olabilir. Örneğin, uzun süredir çalışan ve kaynak tüketimi yüksek olan sorguları tespit etmek için bu scriptler kullanılabilir. Ayrıca, belirli kullanıcılar veya sorgu tipleri bazında da filtreleme yapabilirsiniz.
Basit bir örnekle, Bash ve MySQL client kullanarak şu adımları takip edebilirsiniz:
- Scriptte,
mysql komut satırı aracılığıyla SHOW PROCESSLIST sorgusunu çalıştırın. - Sonuçları belirli bir süreyle karşılaştırın veya belirli kriterlere göre filtreleyin (örneğin, çalışma süresi 60 saniyeden fazla olan sorguları).
- Kritik sorguları, uyarı veya log dosyasına kaydedin veya e-posta ile bildirim gönderin.
İşte temel bir örnek:
12345678910111213141516171819202122232425
#!/bin/bash
HOST='localhost'
USER='kullanici'
PASSWORD='sifre'
LONG_RUNNING_THRESHOLD=60 # saniye
[b]Uzun süredir çalışan sorguları tespit et[/b]
mysql -h $HOST -u $USER -p$PASSWORD -e "SHOW PROCESSLIST" -sN | while read -r line; do
# Çalışma süresi, sorgu metni, kullanıcı ve diğer detaylar
id=$(echo $line | cut -f1)
user=$(echo $line | cut -f2)
host=$(echo $line | cut -f3)
db=$(echo $line | cut -f4)
command=$(echo $line | cut -f5)
time=$(echo $line | cut -f6)
state=$(echo $line | cut -f7)
info=$(echo $line | cut -f8- -d$'\t')
if [ "$time" -ge "$LONG_RUNNING_THRESHOLD" ]; then
echo "Uyarı: $id numaralı sorgu $time saniye çalışıyor. Sorgu: $info" >> /var/log/mariadb_long_running.log
# Ekstra: e-posta veya bildirim gönderilebilir
fi
done
Bu temel script, uzun süredir çalışan sorguları tespit ederek loglar. Daha gelişmiş analizler veya otomasyonlar için, sorgu karmaşıklığını, kullanıcı bazlı filtrelemeleri veya grafiksel gösterimleri entegre edebilirsiniz.
Soru: Sizler, bu tarz otomatik izleme sistemlerini nasıl yapılandırıyorsunuz? Ya da karşılaştığınız en büyük zorluklar nelerdir?