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!
sumber
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.SET GLOBAL log_output=FILE
memperbaikinya untukku.Jawaban:
Saya pikir saya mendapat jawabannya:
Anda harus meletakkan opsi-opsi di bawah
[mysqld]
bagiandan mulai kembali mysql
UPDATE 2013-03-05 16:36 EST
Saya tidak tahu mengapa ini masih terjadi, tapi tolong coba ini:
kemudian jalankan
SELECT SLEEP(10);
dan lihat apakah mendarat/var/logs/my.slow.log
sumber
/var/logs/
bukannya/var/log
[mysqld_safe]
, yang tidak berhasil. Menempatkan mereka di bawah[mysql]
memecahkan masalah.