Permintaan Lambat Tidak Masuk

13

Saya mencoba mengaktifkan log kueri lambat di server kami untuk mengidentifikasi pertanyaan yang dapat menggunakan pengoptimalan. Kedengarannya cukup sederhana, namun file saya tidak ditulis. Saya tidak mendapatkan kesalahan atau hal semacam itu, sepertinya tidak masuk ke query yang lambat. Saya ingat untuk memulai kembali mysql setelah perubahan konfigurasi saya.

Saya menggunakan MySQL Ver 5.1.61. Inilah yang saya miliki di my.cnf:

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

file /var/logs/my.slow.log memiliki mysql sebagai pemilik, juga untuk kepentingan debugging yang saya berikan baca / tulis untuk semua pada file log.

Saya mengatur long_query_time ke 1 di atas karena saya hanya ingin melihat apakah itu berfungsi. Saya telah mencoba mengaturnya lebih rendah (mis. 0,3) tetapi saya masih belum mendapatkan apa pun yang dicatat. Saya tahu bahwa kueri yang dijalankan aplikasi saya membutuhkan waktu lebih dari 1 detik dan saya juga menjalankan kueri log secara sengaja ( SELECT sleep(10);) di terminal untuk pengujian dan log masih kosong.

Saya telah melihat-lihat dokumen, dari apa yang saya lihat ini seharusnya bisa berfungsi. Adakah yang punya saran tentang kesalahan saya? Saran apa pun akan dihargai, terima kasih banyak!

Sunting: Sebagaimana ditanyakan dalam komentar, saya menjalankan kueri:

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

Hasil:

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

Jelas perubahan konfigurasi saya tidak diperhitungkan karena saya percaya ini adalah default. Saya cukup yakin file my.cnf yang saya ubah sedang diuraikan seolah-olah saya memasukkan nilai yang tidak benar mysql akan error saat restart. Apa yang mungkin terjadi di sini?

Edit Lainnya:

Setelah menerima saran @RolandoMySQLDBA dan memindahkan baris konfigurasi kueri lambat ke bawah [mysqld]pengaturan saya tampaknya akan menghemat. Sekarang hasil dari query variable_value di atas adalah:

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

Namun saya masih belum melihat file my.slow.log sedang ditulis. Saya rasa ini bukan masalah izin karena file tersebut dimiliki oleh mysql dan saya telah menambahkan semua izin untuk semua pengguna pada file tersebut. Adakah yang bisa memikirkan alasan mengapa ini tidak berhasil?

Edit: Terpecahkan! Path ke log permintaan lambat salah, seharusnya /var/log/my.slow.log bukan / var / log * s * / my.slow.log. Terima kasih untuk semua bantuannya, saya telah belajar membagikan!

Metode
sumber
1
Silakan jalankan SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');dan kirim hasilnya.
RolandoMySQLDBA
1
Jika ada yang masih memiliki masalah setelah membaca ini, periksa variabel log_output. SET GLOBAL log_output=FILEmemperbaikinya untukku.
molholm

Jawaban:

21

Saya pikir saya mendapat jawabannya:

Anda harus meletakkan opsi-opsi di bawah [mysqld]bagian

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

dan mulai kembali mysql

UPDATE 2013-03-05 16:36 EST

Saya tidak tahu mengapa ini masih terjadi, tapi tolong coba ini:

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

kemudian jalankan SELECT SLEEP(10);dan lihat apakah mendarat/var/logs/my.slow.log

RolandoMySQLDBA
sumber
Terima kasih! Apa yang Anda sarankan membantu, sepertinya pengaturannya tersimpan dengan baik namun saya masih belum bisa menulis. Saya telah mengedit pertanyaan saya untuk mencerminkan hal ini.
TheMethod
Hei, hanya ingin tahu, saya menjalankan sistem Debian di bawah VM. Apakah jalurnya benar dalam balasan Anda? /var/logs/bukannya/var/log
Silviu-Marian
Hanya informasi. "touch & chown" juga diperlukan di lingkungan CentOS 6.6 mysql 5.1.73.
Fumisky Wells
Saya hanya berlari melintasi sistem di mana mereka mencoba untuk menempatkan ini [mysqld_safe], yang tidak berhasil. Menempatkan mereka di bawah [mysql]memecahkan masalah.
Michael Hampton