大家论坛-大家学习网论坛计算机专区Linux论坛Linux高级应用 → 关于Mysql日志设置

意见反馈-google提供的广告

  共有1390人关注过本帖树形打印

主题:关于Mysql日志设置

帅哥哟,离线,有人找我吗?
_SQL_
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:大家网小学二年级 贴子:47 金钱:259 金币:0 积分:3 魅力:0 精华:0 注册:2008-6-18 9:58:00
关于Mysql日志设置  发贴心情 Post By:2008-7-2 15:00:00

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


0  回到顶部