mysql的4种日志:
日志默认在$MYSQL_HOME/data目录下。
可以登录到mysql查看日志情况:
mysql> show variables like '%log%';
mysql> show variables like '%slow%';
1.二进制日志,文件名:mysql-bin.* ,在my.cnf中配置。数据库的主从依赖此文件。mysql-bin 记录了mysql的DDL和DML操作(不含select),但文件是二进制格式,必需用mysqlbinlog命令查看。
2.错误日志,文件名:*.err,记录启动/关闭、运行时严重错误信息。
3.查询日志,记录客户端所有的sql,包含select,对mysql有一定性能影响,不建议开启。
4.慢查询日志,记录了低于my.cnf配置中,long_query_time的sql. 文件名:*-slow.log
显示2014-04-01后的update语句,主要做分析时使用。
注: 这条命令中有空格。
# mysqlbinlog --start-datetime="2014-04-01 00:00:00" /usr/local/mysql-5.5.30/data/mysql-bin.000012 |grep -E "update |use "
应用这条命令的简单的python脚本:
import os
cmd = ''' mysqlbinlog --start-datetime="2014-04-01 00:00:00"
/usr/local/mysql-5.5.30/data/mysql-bin.000012 |grep -E "update |use "
'''
rc = 0
pio = os.popen(cmd)
for i in pio.readlines():
ti = i.replace('\n', "")
#ti = i
if len(ti)>256: print ti[:256] #防止sql太长
else: print ti
rc += 1
pio.close()
print "rowcount: %d" % rc
倒排序,最近的二进制日志。
# ls mysql-bin.0* -1 -C
排除掉注释,只关注DML语句。
# mysqlbinlog mysql-bin.000034 | grep -v "^#" | grep -E "use |insert |update |delete |alert |create "
上一条的进化版,每条语句截取前128字符。
# mysqlbinlog --start-datetime="2014-04-01 00:00:00" mysql-bin14.000012|grep -v "^#"|grep -E "use |insert |update |delete |alert |create "|awk '{print substr($0,0,128)}'