一,故障原因:
在/etc/my.cnf开启了log参数后:
log=/data/mysql/query_log.log
重新启动mysql的时候报错,
[root@bogon mysql]# /etc/init.d/mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
查看错误日志如下:
2016-07-26 14:19:51 0 [Note] Binlog end
160726 14:19:51 mysqld_safe mysqld from pid file /data/mysql/mysql.pid ended
160726 14:23:14 mysqld_safe Starting mysqld daemon with databases from /data/mysql
2016-07-26 14:23:14 0 [ERROR] /usr/local/mysql/bin/mysqld: ambiguous option '--log=/data/mysql/query_log.log' (log-bin, log_slave_updates)
2016-07-26 14:23:14 0 [ERROR] Aborting
二,解决办法:
在网上查询得到的是log的参数已经启用了,改用gneral_log参数
有两种方法启用这个参数:
1,修改my.cnf文件,添加如下两行:
general_log=ON
general_log_file=/tmp/mysql.log
然后重启mysql。
2,在mysql命令行修改:
设置日志输出方式为文件(如果设置log_output=table的话,则日志结果会记录到名为gengera_log的表中,这表的默认引擎都是CSV):
root@(none) 09:41:11>set global log_output=file;
Query OK, 0 rows affected (0.00 sec)
设置general log的日志文件路径:
root@(none) 09:45:06>set global general_log_file='/tmp/general.log';
Query OK, 0 rows affected (0.00 sec)
开启general log:
root@(none) 09:45:22>set global general_log=on;
Query OK, 0 rows affected (0.02 sec)
过一段时间后,关闭general log:
root@(none) 09:45:31>set global general_log=off;
Query OK, 0 rows affected (0.02 sec)
查看tmp/general.log的信息,可以大致看到哪些sql查询/更新/删除/插入比较频繁了。比如有些表不是经常变化的,查询量又很大,就完全可以cache;对主备延迟要求不高的表,读可以放到备库;等等