このメカニズムは、OS syslogとはまったく異なります。
ログ出力の設定は、TABLE、FILE(デフォルト)、またはNONEに設定できます。
これを使うと
[mysqld]
log-output=TABLE
これにより、一般ログやスローログのログがCSVファイルに記録されます。次のようにして、そのCSVをMyISAMに変換できます。
SET @old_log_state = @@global.general_log;
SET GLOBAL general_log = 'OFF';
ALTER TABLE mysql.general_log ENGINE = MyISAM;
ALTER TABLE mysql.general_log ADD INDEX (event_time);
SET GLOBAL general_log = @old_log_state;
その後、このファイルを非常に大きくすることができ、テーブルを頻繁に削除する必要があります。general_logテーブルをパージして、過去3日間を維持する方法は次のとおりです。
SET @old_log_state = @@global.general_log;
SET GLOBAL general_log = 'OFF';
CREATE TABLE mysql.general_log_new LIKE mysql.general_log;
INSERT INTO mysql.general_log_new
SELECT * FROM mysql.general_log WHERE event_time > NOW() - INTERVAL 3 DAY;
DROP TABLE mysql.general_log;
ALTER TABLE mysql.general_log_new RENAME mysql.general_log;
SET GLOBAL general_log = @old_log_state;
syslog(var / log / messages)はどうですか?自分でスクリプトを作成する必要があります。まず、これが必要です。
[mysqld]
log
log-ouput=TABLE,FILE
general-log-file=/var/log/mysql-general.log
両方の形式で一般ログを収集する場合、または
[mysqld]
log
general-log-file=/var/log/mysql-general.log
ファイル形式のみ。
次に、/ var / log / general.logへの変更を収集するスクリプトを作成します。スクリプトは次のようになります。
NEWCOUNT=`wc -l < /var/log/mysql-general.log`
if [ -f /tmp/general-log-lines.txt ]
then
OLDCOUNT=`cat /tmp/general-log-lines.txt`
if [ ${OLDCOUNT} -lt ${NEWCOUNT} ]
then
DIFF=`echo ${NEWCOUNT}-${OLDCOUNT}|bc`
tail -${DIFF} < /var/log/mysql-general.log >> /var/log/messages
echo ${NEWCOUNT} > /tmp/general-log-lines.txt
fi
fi
このスクリプトを毎分実行します。このように深夜ごとに一般ログを切り捨てることをお勧めします
echo -n > /var/log/mysql-general.log
試してみる !!!