MySQLでログを出力してみる

CentOSにMySQLとMemcacheのインストールしてみる
の続き

MySQLでログを出力してみる。

ログ出力用のディレクトリ作成

まず、ログ出力用のディレクトリを作成しておく。

$ sudo mkdir /var/log/mysql
$ sudo chown mysql:mysql /var/log/mysql

エラーログ

エラーログは、デフォルトの設定で/var/logの下に出力するようになっている。

$ sudo vi /etc/my.cnf
・・・
[mysqld_safe]
log-error=/var/log/mysqld.log

作成したmysqlディレクトリに出力させたい場合は、下記のように設定する。

$ sudo vi /etc/my.cnf
・・・
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log

設定を変更した場合は、再起動する。

$ sudo service mysqld restart

下記のような感じでエラーログが出力される。

$ sudo cat /var/log/mysql/mysqld.log 
140423 10:30:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140423 10:30:11 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.
140423 10:30:11  InnoDB: Initializing buffer pool, size = 8.0M
140423 10:30:11  InnoDB: Completed initialization of buffer pool
140423 10:30:13  InnoDB: Started; log sequence number 0 44233
140423 10:30:13 [Note] Event Scheduler: Loaded 0 events
140423 10:30:13 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.73'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution

クエリーログ

クエリーのログを出力したい場合は、下記のように設定する。

$ sudo vi /etc/my.cnf
・・・
[mysqld]
・・・
general_log=1
general_log_file=/var/log/mysql/query.log
$ sudo service mysqld restart

なんか適当にSQLを実行すると、

$ mysql -u ユーザー名 -p
mysql> なんか適当に実行

クエリーのログが出力される。

$ sudo cat /var/log/mysql/query.log 
/usr/libexec/mysqld, Version: 5.1.73-log (Source distribution). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
140423 10:51:57     1 Connect   UNKNOWN_MYSQL_US@localhost as anonymous on 
                    1 Quit
140423 10:52:04     2 Connect   hoge@localhost on 
                    2 Query     select @@version_comment limit 1
140423 10:52:07     2 Quit
なぜか/var/logの下だとログが出力されなかった。
general_log_file=/var/log/query.log

スロークエリーログ

スロークエリーのログを出力したい場合は、下記のように設定する。
long_query_timeには秒数を指定する(小数も指定可)。

$ sudo vi /etc/my.cnf
・・・
[mysqld]
・・・
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=0.1

時間のかかるSQLを実行してみる(大量のINSERTをしてみる)

$ mysql -u ユーザー名 -p
mysql> use test;
mysql> create table sample (id int auto_increment, p int) ENGINE=InnoDB;
mysql> insert into sample (p) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
mysql> insert into sample (p) select s1.p from sample s1, sample s2, sample s3, sample s4, sample s5, sample s6;

スロークエリのログが出力される。

$ sudo cat slow_query.log 
/usr/libexec/mysqld, Version: 5.1.73-log (Source distribution). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 140523 11:06:59
# User@Host: dev[dev] @ localhost []
# Query_time: 5.481855  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 1000010
use test;
SET timestamp=1400810819;
insert into sample (p) select s1.p from sample s1, sample s2, sample s3, sample s4, sample s5, sample s6;

設定の確認

ログ周りの設定は下記のSQLで確認できる。

mysql> show variables like '%log%';
+-----------------------------------------+-------------------------------+
| Variable_name                           | Value                         |
+-----------------------------------------+-------------------------------+
| back_log                                | 50                            |
| binlog_cache_size                       | 32768                         |
| binlog_direct_non_transactional_updates | OFF                           |
| binlog_format                           | STATEMENT                     |
| expire_logs_days                        | 0                             |
| general_log                             | ON                            |
| general_log_file                        | /var/log/mysql/query.log      |
| innodb_flush_log_at_trx_commit          | 1                             |
| innodb_locks_unsafe_for_binlog          | 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_bin_trust_routine_creators          | OFF                           |
| log_error                               | /var/log/mysql/mysqld.log     |
| log_output                              | FILE                          |
| log_queries_not_using_indexes           | OFF                           |
| log_slave_updates                       | OFF                           |
| log_slow_queries                        | ON                            |
| log_warnings                            | 1                             |
| max_binlog_cache_size                   | 18446744073709547520          |
| max_binlog_size                         | 1073741824                    |
| max_relay_log_size                      | 0                             |
| relay_log                               |                               |
| relay_log_index                         |                               |
| relay_log_info_file                     | relay-log.info                |
| relay_log_purge                         | ON                            |
| relay_log_space_limit                   | 0                             |
| slow_query_log                          | ON                            |
| slow_query_log_file                     | /var/log/mysql/slow_query.log |
| sql_log_bin                             | ON                            |
| sql_log_off                             | OFF                           |
| sql_log_update                          | ON                            |
| sync_binlog                             | 0                             |
+-----------------------------------------+-------------------------------+