mysql-bin分析_mysql-bin日志分析

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)}'

你可能感兴趣的:(mysql-bin分析)