Come abilitare la registrazione MySQL?


36

Sto eseguendo MySQL 5.0.45 su OS X 10.6.1 e non riesco a fare in modo che MySQL registri nulla. Sto eseguendo il debug di un'applicazione e devo vedere tutte le domande e gli errori.

Ho aggiunto a etc / my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

Ho usato sudo per creare due file di registro, impostare le autorizzazioni su 644, quindi ho riavviato MySQL.

Ho fatto riferimento a Dov'è il mio registro mysql su OS X? per risolvere i problemi.

In esecuzione:

ps auxww|grep [m]ysqld

Ritorna:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

E in esecuzione:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

Ritorna:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

In esecuzione:

mysql> show variables like '%log%';

Ritorna:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

Qualche aiuto su come posso ottenere il log di MySQL?

Risposte:


23

Anche se hai usato chmod 644, assicurati che mysql sia il proprietario dei registri.

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

Quindi, riavvia mysqld.

Quindi, accedi a mysql ed esegui:

mysql> show variables like '%log%';

Guardate i valori per general_log, general_log_file, log, log_error, etc.

Accendili come necessario ed esegui i flushlog di mysqladmin secondo necessità.


Ora registrazione. Deve essere stata la supervisione della proprietà. Tuttavia, vedi la mia domanda modificata per i risultati della query "mostra variabili come '% log%'". MySQL sta registrando su /var/log/mysql.log, quindi perché non viene visualizzato?
RyOnLife,

13

Per abilitare i file di registro, è necessario assicurarsi che una o più delle seguenti direttive si trovino nella [mysqld]sezione del file di configurazione principale del server mysql ( /etc/my.cnfsul mio):

[mysqld]
log-bin
log
log-error
log-slow-queries

I registri verranno creati, per impostazione predefinita, nella stessa directory di dati che contiene le stesse sottodirectory del database (in genere /var/lib/mysql) e i nomi dei file di registro vengono predefiniti con il nome host seguito da un suffisso che corrisponde ai nomi delle direttive precedenti (ad es. -Bin, -slow -query, ecc.).

Per mantenere i tuoi registri in un percorso diverso o utilizzando nomi di file diversi, specifica il nome di base seguendo la log=direttiva e qualsiasi percorso e nome di file che ti piacciono, ad esempio:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

È necessario riavviare mysqld per rendere effettive queste modifiche.


5

Le risposte precedenti erano obsolete. Puoi guardare il file di configurazione in /etc/my.cnfo su Windows ./mysql/my.ini.

Nella [mysqld]sezione aggiungi

log_bin
general_log
log_error

La documentazione per Windows afferma che i log vengono archiviati ProgramData/MySQL/MySQL Server 5.6/. Ignoralo perché è una bugia.

Inoltre, l' logopzione consigliata è deprezzata e genera l'errore

ambiguous option '--log' (log-bin, log_slave_updates)

essere loggato ./mysql/data/host.erre il demone muore silenziosamente. L'impostazione corretta è general-log.

Inoltre log-slow-queriesnon è valido e ha causato l'errore

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

Quindi assicurati di starne alla larga.


Grazie! Non ho potuto avviare il server con l' log=opzione e per la vita di me ho potuto capire perché. Finalmente qualcuno con una risposta. general-log
jiveturkey,

2

Immettere la riga di comando mysql con super privilegi ed eseguire:

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

Nel mio caso, non importava se questa variabile fosse già impostata con lo stesso valore! Inoltre, ho modificato le autorizzazioni e il proprietario del file, come indicato negli altri post.


1

Prova diverse impostazioni del registro in my.cnf. Nel mio caso avevo bisogno di:

general_log = on

general_log_file=/var/log/mysql/mysql.log
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.