mysql-bin日志分析

参考文档: http://www.mysqlsystems.com/2009/05/mysql-log.html

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日志分析)