Ce mécanisme est entièrement différent du syslog du système d'exploitation.
La définition de la sortie du journal peut être définie sur TABLE, FILE (par défaut) ou NONE
si vous l'utilisez
[mysqld]
log-output=TABLE
Cela entraînera la consignation du journal général et / ou du journal lent dans un fichier CSV. Vous pouvez convertir ce CSV en MyISAM comme suit:
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;
Vous pouvez ensuite laisser ce fichier se développer énormément et vous devrez purger la table de temps en temps. Voici comment purger la table general_log et conserver les 3 derniers jours:
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;
Qu'en est-il du syslog (var / log / messages)? Vous devez l'écrire vous-même. Tout d'abord, vous avez besoin de ceci:
[mysqld]
log
log-ouput=TABLE,FILE
general-log-file=/var/log/mysql-general.log
si vous souhaitez collecter le journal général dans les deux formats ou
[mysqld]
log
general-log-file=/var/log/mysql-general.log
pour juste le format de fichier.
Maintenant, créez un script pour collecter les modifications dans /var/log/general.log. Le script devrait ressembler beaucoup à ceci:
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
Exécutez ce script toutes les minutes. Je recommande de tronquer le journal général tous les minuit comme ceci
echo -n > /var/log/mysql-general.log
Essaie !!!