现在的位置: 首页 > 综合 > 正文

Mysql日志简介

2017年11月24日 ⁄ 综合 ⁄ 共 2076字 ⁄ 字号 评论关闭

Mysql 一共记录 4 种日志
1. The Error Log

2. The General Query Log

  • 内容 通用查询日志里记录了所有客户端连接和断开信息,所有执行的SQL(不论是否成功执行) * 配置 开启选项--log[=file_name]
  • 特点 通用查询日志里记录了服务器的大量行为,所以会随着服务器运行而迅速增大,特别是对于比较繁忙的服务器,磁盘开销很大,正常运行时建议关闭
  • 应用 通用查询日志主要用于服务诊断,平时运行不建议开启
  • 默认 默认不开启,默认文件名为hostname.log,默认路径是数据库data目录
  • MySQL5.1中的通用查询日志 在MySQL5.0中,通用查询日志只能使用文件存储。而在MySQL5.1中,存放在文件中或是存放在表中是可选的。全局的general_log和general_log_file变量可以控制是否记录这个日志。将general_log设为0(或OFF)即可禁用这个log。general_log_file指定了存放log的文件名。当通用查询日志开启的时候,--log-output选项可以控制log的存放方法,可选的值包括(*TABLE*,放在表中:*FILE*,放在文件中;*NONE*,优先考虑其他位置)。
  • 3. The Binary Log

    二进制日志(Binary Log),记录服务器中所有更新操作

    • 配置 开启选项--log-bin以记录慢查询日志
    • 应用 用于记录数据库的所有更新操作,通常用于数据恢复和replication时slave更新操作,建议开启
    • 默认 默认不开启,默认文件名是形如主机名-bin.000001的文件名,默认目录是数据库data目录
    • Rotate 当MySQL服务重启或是日志到达max_binlog_size(1.1G左右)或是FLUSH LOGS执行的时候,二进制日志会rotate一下。
    • 删除日志 设定全局变量expire_logs_days或是SQL命令PURGE BINARY LOGS
    -- 日志被rotate后,如果更新时间大于expire_logs_days天即会被自动删除
    SET GLOBLE expire_logs_days = 1;
    
    -- 删除三天前的日志
    PURGE BINARY LOGS BEFORE now() - interval 3 day;
    
    -- 删除不比mysql-bin.010新的日志
    PURGE BINARY LOGS TO 'mysql-bin.010';

    4. The Slow Query Log
    从MySQL5.1.6开始,General Query Log和Slow Query Log开始可以写到文件或者数据库表中,并且日志的开关,保存方式的修改,都是Global级别动态修改。
    也就是说不需要重启服务器动态生效了。
    日志保存到数据库表
    root@mysql-server>SET GLOBAL log_output=TABLE;
    日志保存到文件
    root@mysql-server>SET GLOBAL log_output=FILE;
    root@mysql-server>SET GLOBAL general_log_file=’/tmp/general.log’;
    root@mysql-server>SET GLOBAL general_log=on;
    root@mysql-server>SET GLOBAL slow_query_log_file=’/tmp/slow.log’;
    root@mysql-server>SET GLOBAL slow_query_log=on;
    保存到数据表则是在mysql.general_log和mysql.slow_log 默认ENGINE为CSV
    SET @old_log_state = @@global.general_log;
    SET GLOBAL general_log = ‘OFF’;
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    可以动态修改日志保存表引擎。
    具体的一些配置用法可以参考Mysql Doc就不再累赘。(http://dev.mysql.com/doc/refman/5.1/en/log-tables.html)

    利用这个功能,脑子里就有了个数据库服务器定时监控系统的雏形。大概的功能是可以在指定的时间段内(而非实时)开启被监控数据库服务器的日志功能,获取并保存日志,出报表给DBA分析,起到抽样日志分析的作用,这样的好处是只需监控数据库的高压时间就可以找到系统的短板。

    最近在Mysql圈子里看到挺多人研究XtraBackup(开源MySQL在线热备份工具 https://launchpad.net/percona-xtrabackup)顺便在这里也啰嗦下,有兴趣的自己研究吧。XtraBackup 下载地址: http://www.percona.com/mysql/xtrabackup/0.7/

    参考文献:http://blog.seateng.cn/archives/2009/06/mysql-server-log.html

    抱歉!评论已关闭.