Domanda

voglio usare syslog per l'accesso MySQL (5.1.41) su Ubuntu (10.04 LTS). Ho trovato informazioni che log degli errori di output a syslog.

[mysqld_safe]
syslog

Ma io voglio usare syslog per accedere i registri generali e log delle query lente. Si prega di avvisare me come scrivere file di configurazione?

Non riuscivo a trovare il modo di farlo nel manuale di riferimento.

http://dev.mysql.com/doc/refman/5.1/en /log-destinations.html

È stato utile?

Soluzione

Questo è molto più semplicemente fatto in questo modo:

cd alle cartelle mysql:

mkfifo mysql-general.log

in my.cnf dire che:

[mysqld]
general-log-file = /path/to/mysql/dir/mysql-general.log

Quindi, configurare il syslog / syslog-ng per leggere il tubo FIFO e fare con essa, come lo farà ..

Nel mio caso, ho pipe attraverso rete ad un server centralizzato con solo i log di errore ei log delle query lente però.

In situazioni in cui si desidera conservare anche copia locale, basta impostarlo su uscita a tavola e file come descritto in precedenza.

Altri suggerimenti

Questo meccanismo è completamente diverso dal syslog OS.

Impostazione log-uscita può essere impostata sia a tavola, FILE (default), o NONE

se si utilizza questo

[mysqld]
log-output=TABLE

Questo farà sì che la registrazione per il registro generale e / o lento log di andare in un file CSV. È possibile convertire che CSV per MyISAM come segue:

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;

Si può quindi lasciare che questo file crescere enormemente e si dovrà eliminare la tabella di tanto in tanto. Ecco come eliminare la tabella general_log e mantenere gli ultimi 3 giorni:

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;

Che cosa circa lo syslog (var / log / messages)? È necessario script che da soli. In primo luogo, si sia bisogno di questo:

[mysqld]
log
log-ouput=TABLE,FILE
general-log-file=/var/log/mysql-general.log

se si desidera raccogliere il registro generale in entrambi i formati o

[mysqld]
log
general-log-file=/var/log/mysql-general.log

solo per il formato di file.

Ora fare uno script per le modifiche raccolte per /var/log/general.log. Lo script dovrebbe apparire un po 'come questo:

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

Esegui questo script ogni minuto. Vi consiglio troncare il registro generale ogni mezzanotte come questo

echo -n > /var/log/mysql-general.log

fare un tentativo !!!

In /etc/my.cnf, impostarlo.

[mysqld]
general-log-file = /path/to/mysql/dir/mysql-general.log

Modifica file /etc/rsyslog.conf (RHEL / CentOS), e attivare il modulo imfile per leggere / path / to / mysql / dir / mysql -general.log e poi, inviarlo al server remoto syslog, rispettando un intervallo configurato nel PollingInterval parametro.

Questa sezione dovrebbe essere simile di seguito:

module(load="imfile" PollingInterval="1")

input(type="imfile"
    File="/path/to/mysql/dir/mysql-general.log"
    stateFile="statefile-mysql-general"
    Tag="mysql-general"
    Severity="warning"
    Facility="local1")

Uncoment la linea con WorkDirectory

$WorkDirectory /var/lib/rsyslog # where to place spool files

e configurarlo per inviare tutti i log in remoto

*.* @@remote-ip:514 ## For TCP Connection

o

 *.* @remote-ip:514 ## For UDP Connection
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top