MySQL DBA
分类: Mysql/postgreSQL
2013-03-07 14:10:54
2. general query log
3. binary log
4. slow query log
5. innodb log
日志管理相关命令:
flush logserror /slow/general log不会改变,如果不存在则创建新的文件;bin log 直接创建新的文件。
log-output设置日志输出方式table或file,两者可同时记录
error log记录mysqld启动、关闭以及运行过程中的错误信息。
log-error配置错误日志文件的路径及名称。log-warnings配置是否记录警告信息,默认为true。
error log对于错误诊断,故障修复以及发现安全隐患有非常重要的作用。mysqld启动失败时,绝大部分时间可以通过error log确定出错的原因,如参数的配置错误:格式,内存配置过大,数据目录路径错误或权限问题;innodb在异常退出后的回滚,系统库的丢失等;运行过程出现的错误和警告信息同样可以用与分析数据库的性能,数据表的损坏,复制过程中的错误,域名的解析等问题。同样errorlog中记录了数据库关闭的过程之后正常。在解决故障过程中,第一件事情就是检查error log,从中找到用于后续分析的信息。
启动时的log:
点击(此处)折叠或打开
关闭时log:
点击(此处)折叠或打开
过程中的log,如复制、表的修复,域名解析,磁盘空间不足等信息。
点击(此处)折叠或打开
当然很多问题在error log中找不到任何信息的,比如慢查询。
general log从客户端连接开始,记录所有的sql执行记录,直到连接关闭。较少开启使用,对所有的操作记录日志,必然带来io负载,而且这个日志的增长会非常快,也会占用磁盘空间。general log可以动态的开启和关闭,一般会在需要的时候开启一段时间用于分析。正常运行关闭general log。
setglobalgenral_log=1/0;
bin log记录所有修改数据的sql语句。主要用于复制、数据备份恢复。
bin log的格式有row,statement,mixed。如果不是在行模式下,所有的更改操作都会被记录,即使实际上这个语句并没有改变数据。如:
update tablesetcol=1where1=2;
在mixed模式下,一般记录方式为statement,一些特性情况下,转换为row模式:
1. 更新的表为NDB引擎表。
2. function中使用uuid()
3. 1个以上带自增长列的表更新
4. insert delayed
5. view中内容需要row模式
6. 用户自定义函数
7. 等。
相关参数:
binlog_format bin log记录模式
log-bin 指定bin log的数据目录及名称前缀
max_binlog_size binlog日志文件的大小上限。为保证一个事务在一个bin log文件中,实际的值可能大于这个参数值。一般情况下,当日志文件达到这个值后,mysqld会根据log-bin-index指定文件内容生成下一个binlog文件。
binlog-do-db /binlog-ignore-db用于指定bin log的记录内容
log-slave-updates 设置slave是否对复制的数据记录到binlog,如多级复制时,中间级的db就需要这个参数以便后续的slave做复制。
binlog-cache-size bin log日志缓存大小。对于事务引擎,在事务未提交前,binlog将记录在这个cache中,如果超过cache大小就使用临时文件。
max_binlog_cache_size binlog缓存最大值
sync_binlog bin log flush到磁盘的频率设置,(0,1,n)。
工具命令:
reset master重置所有的binlog,也就是回到未开启bin log的情况。
purge binary logs删除bin log日志文件。
mysqlbinlog 用于binlog分析工具。bin log本身是二进制不方便查看,这个工具可以是bin log可视化。
slow query记录慢查询语句。
慢查询的检查是非常有必要的。经常由于sql语句导致负载高,响应慢,长时间资源占用甚至是拖垮数据库。而对慢查询的优化处理可以提升性能,降低系统负载以及避免故障的产生。
参数:
log-slow-queries 开启/关闭慢查询日志
long_query_time 慢查询记录时间
log-queries-not-using-indexs 对未使用索引的查询记录到slow log
慢查询的分析工具有自带的mysqldumpslow,mysqlsla,pt-query-diges等,各有所长,主要作用都是对慢查询日志进行统计分析和排序,提供更好的分析结果。
innodb的日志分为redo log(日志文件组ib_logfile*)和undo log(共享表空间中ibdata*)。
redo log重做日志用与数据的恢复以及提高io能力。
undo log撤销日志用于事务的回滚。