MySQL: выводим логи через syslog

Автор: | 04/15/2014
 

mysqllogoВ MySQL версии 5.1.20 и выше была добавлена возможность вести лог через стандартный демон syslogd.

Для этого используются опции  syslog (MySQL v. 5.1.20) и syslog-tag (MySQL v. 5.1.21).

Потом этот лог можно либо пересылать на удалённый хост — либо записывать в базу MySQL для вывода в LogAnalizer.

Рассмотрим такую настройку на примере:

mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| version | 5.1.69 |
+---------------+--------+
1 row in set (0.01 sec)

# cat /etc/redhat-release
CentOS release 6.4 (Final)
# rsyslogd -v
rsyslogd 5.8.10, compiled with:

Редактируем файл /etc/my.cnf, в блоке [mysqld_safe] добавляем строки:

syslog
syslog-tag = mysqld

Тут — syslog означает, что лог ошибок MySQL будет отправлять демону syslogd (у нас это rsyslogd), и присваивать им тег mysqld.

Переходим к rsyslogd. Создадим файл /etc/rsyslog.d/mysql.conf с таким содержимым:

:syslogtag, contains, "mysql" /var/log/mysql/mysql-error.log

Проверяем конфигурацию rsyslogd:

# rsyslogd -N1
rsyslogd: version 5.8.10, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: WARNING: rsyslogd is running in compatibility mode. Automatically generated config directives may interfer with your rsyslog.conf settings. We suggest upgrading your config and adding -c5 as the first rsyslogd option.
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad immark
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: MarkMessagePeriod 1200
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad imuxsock
rsyslogd: End of config validation run. Bye.

Перезапускаем rsyslogd:

# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]

Перезапускаем MySQL:

# service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]

И смотрим лог:

# tail -n 5 /var/log/mysql/mysql-error.log
Apr 15 13:11:53 lms-teamcity mysqld-mysqld: 140415 13:11:53 InnoDB: Completed initialization of buffer pool
Apr 15 13:11:54 lms-teamcity mysqld-mysqld: 140415 13:11:54 InnoDB: Started; log sequence number 3 2818834709
Apr 15 13:11:54 lms-teamcity mysqld-mysqld: 140415 13:11:54 [Note] Event Scheduler: Loaded 0 events
Apr 15 13:11:54 lms-teamcity mysqld-mysqld: 140415 13:11:54 [Note] /usr/libexec/mysqld: ready for connections.
Apr 15 13:11:54 lms-teamcity mysqld-mysqld: Version: '5.1.69' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution