Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tutorial MySQL – Mengelola Log Server MySQL:Putar, Kompres, Pertahankan &Hapus

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda menetapkan nilai default untuk kolom MySQL Datetime?

  2. Mendapatkan semua baris induk dalam satu kueri SQL

  3. Cara menghapus catatan MySQL setelah waktu tertentu

  4. Cara Mengelola MySQL - untuk Oracle DBA

  5. PDO mengambil satu kolom dari tabel ke dalam array 1 dimensi