Günlüğe Kaydedilmeyen Yavaş Sorgular


13

Optimizasyon kullanabilen sorguları tanımlamak için sunucumuzda yavaş sorgu günlüğünü etkinleştirmeye çalışıyorum. Kulağa yeterince basit geliyor, ancak dosyama yazılmıyor. Hiçbir hata ya da benzeri bir şey olsun, sadece yavaş sorguları günlüğü gibi görünmüyor. Benim yapılandırma değiştikten sonra mysql yeniden başlatmayı hatırladım.

MySQL Ver 5.1.61 kullanıyorum. İşte my.cnf içinde ne var:

slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

/var/logs/my.slow.log dosyasının sahibi olarak mysql var, ayrıca hata ayıklama amacıyla günlük dosyasında herkese okuma / yazma verdim.

Ben sadece çalışıp çalışmadığını görmek istiyorum gibi yukarıda 1 olarak ayarlanmış long_query_time var. Daha düşük ayarlamayı denedim (örn. 0.3) ama yine de günlüğe hiçbir şey almıyorum. Uygulamamın çalıştığı sorguların 1 saniyeden uzun sürdüğünü biliyorum ve ayrıca SELECT sleep(10);test için terminalde kasıtlı olarak günlük sorguları ( ) çalıştırdım ve günlük hala boş.

Dokümanlara baktım, bunun işe yaradığını görebildiğim kadarıyla. Ne yaptığım konusunda herhangi bir öneriniz olan var mı? Herhangi bir tavsiye mutluluk duyacağız, çok teşekkürler!

Düzenleme: Yorumlarda istendiği gibi sorguyu çalıştırdı:

 `SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`

Sonuç:

10.0000000
/var/run/mysqld/mysqld-slow.log
OFF

Açıkçası, bunların varsayılan değerler olduğuna inandığım için yapılandırma değişikliklerim dikkate alınmıyor. Ben değiştirdiğim my.cnf dosyası sanki geçersiz bir değer koymak mysql yeniden başlatmada hata olacak gibi ayrıştırılıyor eminim. Burada neler olabilir?

Başka Bir Düzenleme:

@RolandoMySQLDBA'nın tavsiyelerini aldıktan ve yavaş sorgu yapılandırma satırlarımı [mysqld]ayarlarımın altına taşıdıktan sonra kaydediliyor gibi görünüyor. Şimdi yukarıdaki variable_value sorgusunun sonucu:

1.0000000
/var/logs/my.slow.log
ON

Ancak hala my.slow.log dosyasının yazılmakta olduğunu görmüyorum. Ben dosya mysql ait olduğu gibi bir izin sorunu olduğunu sanmıyorum ve ben dosyadaki tüm kullanıcılar için tüm izinleri ekledim. Herkes bunun neden işe yaramayacağını düşünebilir mi?

Düzenleme: Çözüldü! Yavaş sorgu günlüğünün yolu yanlıştı, / var / log * s * / my.slow.log yerine /var/log/my.slow.log olmalıdır . Yardım için herkese teşekkürler, çok şey öğrendim!


1
Lütfen SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');çıktısını çalıştırın ve yayınlayın.
RolandoMySQLDBA

1
Bunu okuduktan sonra hala sorun yaşayan biri varsa, log_output değişkenini kontrol edin. SET GLOBAL log_output=FILEbenim için düzeltti.
molholm

Yanıtlar:


21

Sanırım cevabı aldım:

Bu seçenekleri [mysqld]bölümün altına koymanız gerekir

[mysqld]
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

ve mysql'yi yeniden başlat

GÜNCELLEME 2013-03-05 16:36 EST

Bunun neden hala olduğunu bilmiyorum, ama lütfen şunu deneyin:

service mysql stop
rm -f /var/logs/my.slow.log
touch /var/logs/my.slow.log
chown mysql:mysql /var/logs/my.slow.log
service mysql start

sonra koş SELECT SLEEP(10);ve inip inmediğini gör/var/logs/my.slow.log


Önerdiğin şey yardımcı oldu, ayarlar düzgün kaydediliyor gibi görünüyor, ancak hala bir şeyler yazmıyorum. Sorumu bunu yansıtacak şekilde düzenledim.
TheMethod

Hey, merak ediyorum, VM altında Debian sistemi kullanıyorum. Yanıtınızdaki yol doğru mu? /var/logs/yerine/var/log
Silviu-Marian

Sadece bilgi. CentOS 6.6 mysql 5.1.73 ortamında da "dokun ve kes" gereklidir.
Fumisky Wells

Bunları yerleştirmeye çalıştıkları [mysqld_safe], işe yaramayan bir sistemle karşılaştım. Onları ortaya koymak [mysql]sorunu çözdü.
Michael Hampton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.