MySQL日志

一、错误日志

记录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:以上的混合模式,默认。

 

  1. 查看

    mysqlbinlog 文件名 [-v]

  1. 删除

    方法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)表。

建议正常情况下打开此日志,并经常查看分析。

 

原文地址:https://www.cnblogs.com/cshaptx4869/p/10482203.html