Mysql 一共记录 4 种日志
1. The Error Log
2. The General Query Log
3. The Binary Log
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就不再累赘。
利用这个功能,脑子里就有了个数据库服务器定时监控系统的雏形。大概的功能是可以在指定的时间段内(而非实时)开启被监控数据库服务器的日志功能,获取并保存日志,出报表给DBA分析,起到抽样日志分析的作用,这样的好处是只需监控数据库的高压时间就可以找到系统的短板。
最近在Mysql圈子里看到挺多人研究XtraBackup(开源MySQL在线热备份工具)顺便在这里也啰嗦下,有兴趣的自己研究吧。XtraBackup 下载地址