MySQL Server menghasilkan beberapa log yang dapat membantu Anda memantau aktivitas server. Namun, begitu log ini diaktifkan, ukurannya bisa bertambah dan mulai memakan terlalu banyak ruang disk. Inilah mengapa penting untuk memiliki cara otomatis untuk mengarsipkan dan melestarikan file log MySQL untuk durasi tertentu, serta menghapus yang lama. Dalam posting blog ini, kami menjelaskan beberapa praktik terbaik untuk menyiapkan dan mengelola log kesalahan MySQL, log umum, dan log kueri lambat untuk penerapan MySQL Anda.
Menyiapkan Pencatatan Server MySQL
Mari kita lihat cara mengatur 3 jenis log berikut:
Log Kesalahan
Mencatat semua masalah yang dihadapi selama memulai, menjalankan, atau menghentikan mysqld. Log ini dapat diaktifkan dengan memiliki opsi berikut di file /etc/my.cnf:
- log_error=/var/log/mysql/mysqld.log
Log Kueri Umum
Mencatat koneksi klien yang dibuat dan pernyataan yang diterima dari klien. Log ini dapat diaktifkan dengan memiliki opsi berikut di file /etc/my.cnf:
- general_log=ON
- general_log_file=/var/log/mysql/general.log
Log Kueri Lambat
Mencatat kueri yang membutuhkan lebih dari long_query_time detik untuk dieksekusi. Log ini dapat diaktifkan dengan opsi berikut di file /etc/my.cnf:
- slow_query_log=ON
- slow_query_log_file=/var/log/mysql/mysql-slowquery.log
Menyiapkan Kriteria Rotasi Log
Sebagai contoh, mari kita memiliki beberapa kriteria untuk mengelola log kueri MySQL umum. Kami dapat menemukan serangkaian kriteria yang sesuai untuk pengelolaan log dengan mengajukan pertanyaan berikut:
T:Berapa ukuran maksimum file log yang dapat dikembangkan?
J:Katakanlah itu bisa tumbuh hingga 300 MB setelah itu perlu diputar dan dikompresi.
T:Berapa frekuensi yang Anda inginkan untuk memutar file log?
J:Kita dapat mengatakan bahwa kita ingin log dirotasi setiap hari.
T:Berapa banyak file log lama yang ingin Anda simpan?
J:Kami ingin menyimpan 30 file log terakhir.
Berdasarkan kriteria di atas, keseluruhan ruang disk yang diperlukan untuk manajemen log kueri umum adalah sekitar 1,2 GB. Dengan asumsi rasio kompresi 90% – kami akan memiliki 30 file log terkompresi dengan ukuran masing-masing 30 MB dan file log langsung sekitar 300 MB.
Mengelola Log Server MySQL:Putar, Kompres, Pertahankan &HapusKlik Untuk Tweet
Mengelola Log Menggunakan Utilitas logrotate Linux
logrotate adalah utilitas Linux yang membantu administrasi file log secara efisien dan menyediakan opsi untuk rotasi otomatis, kompresi, dan penghapusan file log. Kriteria yang ditetapkan di atas dapat dikonfigurasi untuk utilitas logrotate dengan membuat file konfigurasi di folder /etc/logrotate.d.
Sebut saja file konfigurasi ini mysqlgeneral dan isi filenya adalah:
/var/log/mysql/general.log{
compress
dateext
maxsize 300M
copytruncate
maxage 365
dateformat -%Y%m%d%s
daily
rotate 30
notifempty
}
Dengan opsi logrotate di atas, log kueri umum dirotasi setiap hari atau saat ukuran file log melebihi 300 MB. Log lama dikompresi dan 30 file tersebut akan disimpan. Rotasi log akan dilewati jika file log kosong karena pengaturan 'notifempty'.
Opsi 'copytruncate' adalah untuk memastikan bahwa file log saat ini tidak pernah dihapus selama rotasi dan hanya isinya yang terpotong. Ini penting karena beberapa aplikasi mengharapkan file log selalu tersedia dan tidak mungkin menghapus log tanpa menghentikan aplikasi terlebih dahulu.
Sekarang setelah konfigurasi rotasi log disetel untuk log kueri umum, utilitas logrotate harus dijalankan agar konfigurasi di atas dijalankan. Ini biasanya dilakukan melalui pekerjaan cron. Kita dapat mengatur ini agar berjalan setiap jam dengan menempatkan skrip logrotate di direktori /etc/cron.hourly:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
Jadi, dengan beberapa langkah sederhana, kami telah menyiapkan rotasi log untuk log umum MySQL berdasarkan kriteria kami. Pendekatan yang sama dapat diikuti untuk log kesalahan MySQL dan log kueri lambat juga. Lihat posting lain ini untuk mempelajari lebih lanjut tentang mengoptimalkan penerapan MySQL Anda:
- Menghitung Ukuran Kumpulan Buffer InnoDB untuk Server MySQL Anda
- Tutorial MySQL – Mengonfigurasi dan Mengelola SSL di Server MySQL Anda
- Dijelaskan Kerangka Ketersediaan Tinggi MySQL – Bagian I:Pendahuluan