mysqlの出力を回転させるためにlogrotateを使用しています。 cronがlogrotateを実行すると、次の内容を含む電子メールが頻繁に届きます。
error: Compressing program wrote following message to stderr when compressing log /var/log/mysql/mysqld.err-20150408:
gzip: stdin: file size changed while zipping
logrotateがファイルを移動してgzipを呼び出した後でも、ファイルがまだ開いていてmysqlがファイルに書き込んでいることを示しています。これは私のmysql logrotate設定です。
/var/log/mysql/mysql.err /var/log/mysql/mysql.log /var/log/mysql/mysqld.err {
monthly
create 660 mysql mysql
notifempty
size 5M
sharedscripts
missingok
postrotate
[ -f /var/run/mysqld/mysqld.pid ] && /bin/kill -HUP `cat /var/run/mysqld/mysqld.pid`
endscript
}
これは Gentoo の mysql パッケージに付属する修正されていないファイルなので、何か問題があると疑われます。他のログの回転に問題はありません。
何が起こるのかというアイデアはありますか?
答え1
gzipエラーメッセージは、何が起こっているのかをほとんど教えてくれます。圧縮中にファイルが記録されています(この場合はMySQLによって)。マニュアルページでdelaycompress
(with)を試してください。compress
遅延圧縮
前のログファイルの圧縮を次のサイクルに延期します。これは圧縮でのみ機能します。一部のプログラムがログファイルを閉じるように指示できず、しばらく前のログファイルに書き込みを続けることができる場合に使用できます。