Saya memiliki konfigurasi logrotate ini dan saya menjalankan Ubuntu 10.04.
/var/log/mysql/mysql-slow.log {
daily
rotate 3
compress
notifempty
missingok
create 660 mysql adm
postrotate
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}
Saya menaruh ini di /etc/logrotate.d kemarin dan hari ini log tidak diputar.
Berikut adalah hal-hal yang telah saya lakukan:
- Saya memverifikasi bahwa log tersebut memang ada di /var/log/mysql/mysql-slow.log
- baris mysqladmin berfungsi dengan baik saat dijalankan sebagai root
- mysql dapat menulis ke mysql-slow.log
Ketika saya melakukan ini:
$ logrotate -d -f mysql-slow
reading config file mysql-slow
reading config info for /var/log/mysql/mysql-slow.log
Handling 1 logs
rotating pattern: /var/log/mysql/mysql-slow.log forced from command line (3 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mysql/mysql-slow.log
log needs rotating
rotating log /var/log/mysql/mysql-slow.log, log->rotateCount is 3
dateext suffix '-20120329'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/mysql/mysql-slow.log.3.gz to /var/log/mysql/mysql-slow.log.4.gz (rotatecount 3, logstart 1, i 3),
renaming /var/log/mysql/mysql-slow.log.2.gz to /var/log/mysql/mysql-slow.log.3.gz (rotatecount 3, logstart 1, i 2),
renaming /var/log/mysql/mysql-slow.log.1.gz to /var/log/mysql/mysql-slow.log.2.gz (rotatecount 3, logstart 1, i 1),
renaming /var/log/mysql/mysql-slow.log.0.gz to /var/log/mysql/mysql-slow.log.1.gz (rotatecount 3, logstart 1, i 0),
renaming /var/log/mysql/mysql-slow.log to /var/log/mysql/mysql-slow.log.1
creating new /var/log/mysql/mysql-slow.log mode = 0660 uid = 20004 gid = 4
running postrotate script
running script (multiple) with arg /var/log/mysql/mysql-slow.log : "
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
"
compressing log with: /bin/gzip
removing old log /var/log/mysql/mysql-slow.log.4.gz
- Di mana log yang menunjukkan bahwa logrotate berhasil? Saya ingin melihat apakah ada sesuatu yang akan mengatakan bahwa ada masalah.
- Adakah ide mengapa logrotate tidak berfungsi?
crond
berlari?mysql-server
? Larigrep '/var/log/mysql' /etc/logrotate.d/*
./etc/crontab
file, di baris yang berakhir dengan/etc/cron.daily )
. Mungkin Anda membuat konfigurasi logrotate setelah pekerjaan harian cron untuk hari itu sudah berjalan?Jawaban:
Masalah umum adalah ketika Anda pertama kali mengatur entri logrotate.d harian, itu tidak akan diputar pada hari pertama. Ketika Anda menggunakan rotasi berdasarkan waktu (harian / mingguan / bulanan) logrotate mencoret-coret cap tanggal dari tanggal terakhir itu melihat file di
/var/lib/logrotate/status
(atau/var/lib/logrotate.status
pada sistem RHEL).Tanggal yang dicorat-coret menjadi tanggal referensi dari yang akan dijalankan di masa depan
logrotate
untuk membandingkan rotasi 'harian'. Karena pekerjaan cron default berjalan setiap hari, ini biasanya hanya masalah dalam pekerjaan harian.Anda dapat menghindari masalah ini dengan dua cara;
menjalankan
sudo logrotate -f /etc/logrotate.d/<my rotate job>
Edit
/var/lib/logrotate/status
dan tambahkan baris secara manual:"/var/log/my_special.log" 2013-4-8
sumber
-f
(setidaknya pada turunan RH saya).-f
untuk Force Rotation,-d
untuk Debug, juga debug menyiratkan run kering sehingga tidak ada perubahan yang benar-benar akan dibuat ketika-d
sedang aktif.-d
menyiratkan dry run adalah hal yang sulit. Tidak ada perubahan yang dilakukan, dan saya menggaruk-garuk kepala sampai saya menyadari fakta ini.Menurut artikel Slicehost berikut:
Memahami logrotate di Ubuntu - bagian 2
http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-ubuntu-part-2
...
/var/lib/logrotate/status
file " menyimpan informasi tentang kapan terakhir diputar setiap file log. " Halaman logrotate mengatakan yang disebut "file negara".Ada diskusi lain di sini di ServerFault yang mungkin juga berguna:
Bagaimana logrotate menangani "sehari-hari"?
Dalam diskusi itu, "MadHatter" mengatakan, mengenai hal-hal berikut, mengenai file "status" (negara bagian):
Saya harap ini membantu.
sumber
Jika
mysqladmin
memerlukan pengguna atau kata sandi, ia tidak akan membacanya dari/root/.my.cnf
konfigurasi tanpa modifikasi.Coba perpip output Anda ke logger untuk melihat apa yang terjadi.
MySQL tidak mencatat kesalahan pada file baru setelah diputar?
sumber