一、错误日志
记录mysqld启动和停止,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。
--log-error[=file_name] 指定mysqld保存错误日志文件的位置。如果没有给file_name值,mysqld使用错误日志名 主机名.err 并默认在参数datadir指定的目录中写入日志文件。
二、二进制日志
记录了所有的DDL和DML语句,不包括查询语句。语句以“事件”的形式保存,它描述了数据的更改过程。此日志对于灾难时的数据恢复起着极其重要的作用。
--log-bin[=file_name] 将数据变更情况写入日志。如果没有给file_name值,默认为主机名_bin。如果给出了文件名,但没有包含路径,则文件默认被写入datadir指定的目录。
二进制日志分三种格式:statement、row、mixed。--binlog_format进行设置。
Statement:记录的是SQL语句。
Row:记录每一行的变更记录。
Mixed:以上的混合模式,默认。
- 查看
mysqlbinlog 文件名 [-v]
- 删除
方法1:reset master; 将删除所有binlog日志,新的日志标号从000001开始。
方法2:purge master logs to ‘mysql-bin.xxxxxx’,将删除 xxxxxx 编号之前的所有日志。
方法3:purge master logs before ‘yyyu-mm-dd hh24:mi:ss’命令,将删除该日期之前的所有日志。
方法4:--expire_logs_days=#,设置日志的过期天数指定的天数。在[mysqld]中,加入expire_logs_days=xxx
--binlog-do-db=db_name: 告诉主服务器,那些数据库将更新写入二进制日志中
--binlog-ignore-db=db_name: 那些不保存
注意:可以对上面的参数配置使用多个
--binlog-safe-binlog: 经常和—sync-binlog=N(每N次日志同步磁盘)一起配合使用,是的事务在日志中的记录更加安全。
三、查询日志
记录客户端的所有语句。可以选择保存在文件或者表中。--log-output=[value,…],value可以是table、file、none的一个或者多个组合,用逗号分隔,分别表示保存在表(mysql.general_log)、文件、不保存在表和文件中。其中none的优先级最高。默认保存到文件。
如果要启用查询日志,通过参数 --general_log={0|1} 和 --general_log_file=file_name来进行控制。前者控制是否启用日志,后者控制日志文件的路径。默认文件名是 主机名.log,默认存放在datadir文件目录。
注意:此日志对系统性能影响较大,建议一般情况下关闭。
四、慢查询日志
记录了所有执行时间超过参数 long_query_time (秒,默认10,最小0)设置值并且扫描记录不少于 min_examined_row_limit的所有SQL语句的日志(表锁定不记时)。
默认关闭。
--slow-query_log={0|1},slow_query_log_file[=file_name];与查询日志类似(mysql.slow_log)表。
建议正常情况下打开此日志,并经常查看分析。