Dieser Mechanismus unterscheidet sich grundlegend vom Betriebssystem-Syslog.
Das Einstellen der Protokollausgabe kann entweder auf TABLE, FILE (Standardeinstellung) oder NONE festgelegt werden
wenn du das verwendest
[mysqld]
log-output=TABLE
Dies bewirkt, dass die Protokollierung für das allgemeine Protokoll und / oder das langsame Protokoll in eine CSV-Datei wechselt. Sie können diese CSV wie folgt in MyISAM konvertieren:
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;
Sie können diese Datei dann enorm vergrößern und müssen die Tabelle von Zeit zu Zeit leeren. So löschen Sie die general_log-Tabelle und behalten die letzten 3 Tage bei:
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;
Was ist mit dem Syslog (var / log / messages)? Sie müssen das selbst schreiben. Zunächst benötigen Sie entweder Folgendes:
[mysqld]
log
log-ouput=TABLE,FILE
general-log-file=/var/log/mysql-general.log
wenn Sie das allgemeine Protokoll in beiden Formaten sammeln möchten oder
[mysqld]
log
general-log-file=/var/log/mysql-general.log
nur für das Dateiformat.
Erstellen Sie jetzt ein Skript, um Änderungen an /var/log/general.log zu erfassen. Das Skript sollte ungefähr so aussehen:
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
Führen Sie dieses Skript jede Minute aus. Ich empfehle, das allgemeine Protokoll alle Mitternacht so abzuschneiden
echo -n > /var/log/mysql-general.log
Versuche es !!!