1.首先,我想找到日志的路径,于是想看看my.cnf的设置:find / -name
"my.cnf"。但是,系统里面有两个my.cnf,我们用的是哪一个呢ps auxww|grep mysqld。其中,a 表示显示所有的行程,u
表示显示行程拥有者的信息,x 显示 deamon 的信息,ww 则是显示完整的 COMMAND 字段,不要将太长的部份截断。
USER PID
%CPU %MEM VSZ RSS TT STAT STARTED TIME
COMMAND
root 209 0.0 0.0 644 240 con- I 13Nov06 0:00.02
/bin/sh
/home/mysql/bin/mysqld_safe
得到--datadir=/home/mysql/var,日志文件的路径找到了。但是,这里只有默认的数据库bin日志,没有我要的query日志。
2.查看启动项
internal#cd /etc/rc.local
/home/mysql/bin/mysqld_safe
&
/usr/local/apache2/bin/apachectl start
internal#ps auxww| grep mysqld
root 209 0.0 0.0 644 240 con- I
13Nov06 0:00.02 /bin/sh /home/mysql/bin/mysqld_safe
mysql 291 0.1 4.0
45864 20604 ?? S 13Nov06 436:35.30 /home/mysql/bin/mysqld
--basedir=/home/mysql --datadir=/home/mysql/var --user=mysql
--pid-file=/home/mysql/var/internal.netease.com.pid --port=3306
--socket=/tmp/mysql.sock
有两个mysqld进程
internal#sockstat
USER COMMAND PID FD PROTO LOCAL
ADDRESS FOREIGN ADDRESS
nobody httpd 29607 4 tcp4
*:* *:*
root sshd 29403 3
tcp4 192.168.7.216:22 192.168.30.195:322
mysql mysqld 291 27
tcp4 192.168.7.216:3306 192.168.30.195:300
USER:哪个使用者开启的 socket。
COMMAND:经由哪一个指令。
PID:该指令的 process ID 是多少。
DF:socket 的 file descriptor number。
PROTO:哪一种协定。
LOCAL
ADDRESS:本地的地址及 port (Internet sockets only)。
FOREIGN ADDRESS:来源的地址及 port
(Internet sockets only)。
ADDRESS:socket 开启的档案或目标程序(UNIX sockets only)。
mysql_safe其实是启动mysqld的,然后它就挂起了。
3.先停了mysql:./bin/mysqladmin -u root -p
shutdown(这是mysql用户root)
然后指定二进制日志和查询日志的路径以及文件名
./mysqld_safe
--log-bin=/var/intra/bin-log/mysql-bin --log=/var/intra/query-log/query.log
&
4.但是,找不到query.log这个文件,原来mysql用户没有write的权限,/home/mysql的拥有者是root
改掉它的设置:chown
mysql:mysql mysql
再次重启mysql服务,这次终于搞定了。
附录:
//显示所有本机上的二进制日志
mysql> SHOW
MASTER LOGS;
//删除所有本机上的二进制日志
mysql> RESET
MASTER;
//删除所有创建时间在binary-log.xxx之前的二进制日志
mysql> PURGE MASTER
LOGS TO 'binary-log.xxx';
//只保留最近6天的日志,之前的都删掉
find /var/intra -type f -mtime +6
-name "*.log" -exec rm -f {} \;
//用键盘左上角(也就是Esc下面)那个键包围起来,说明是命令。-1d是昨天,以此类推-1m是上个月等等
day=`/bin/date
-v -1d +%Y%m%d`;
//给文件改名
mv xxx.log
xxx-${day}.log;
//这里还要加上数据库的用户名密码,作用是更新日志(包括二进制日志和查询日志等等)
mysqladmin
flush-logs