MySQL 日志管理
时间:2010-10-26 来源:haiquan517
一. LOG管理
1. 错误日志
错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息;
可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置;
执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件
2. 通用查询日志
记录所有连接和语句,并且当客户端发生错误并想确切地知道该客户端发送给mysqld的语句;
用--log[=file_name]或-l [file_name]选项启动它。如果没有给定file_name的值, 默认名是host_name.log
3. 二进制日志
①. 二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句;
②. 二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新;
③. 二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句;
④. 用--log-bin[=file_name]选项启动时,mysqld写入包含所有更新数据的SQL命令的日志文件。如果未给出file_name值, 默认名为-bin后面所跟的主机名;
⑤. 使用mysqlbinlog 查看二进制LOG;
⑥. 删除所有binlog,并创建一个新的binlog:reset master;
⑦. Purge master logs to ‘mysql-bin.******’:删除******编号之前的所有binlog;
⑧. Purge master logs before ‘yyyy-mm-dd hh24:mi:ss’:删除日期为yyyy-mm-dd hh24:mi:ss之前产生的所有binlog;
⑨. --expire_logs_days=# 设置日志的过期天数,过了指定的天数后日志将会被自动删除,在my.conf加入此参数,如:expire_logs_day=3 ,删除3天前的binlog自动,可用mysqladmin flush-log 触发此参数执行;
⑩. --binlog-do-db=db_name :此选项告诉主服务器,如果当前数据库是db_name,应将更新记录到binlog中,其他数据库更新将被忽略;
⑾. --binlog-ignore-db=db_name :此选项与上面相反
4. 慢速查询日志
用--log-slow-queries[=file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件,如果没有给出file_name值, 默认未主机名,后缀为-slow.log ;
慢查询日志可以用来找到执行时间长的查询,可以用于优化