牛刀小试MySQL--日志文件
MySQL Server的日志文件一共有五种类型的日志。(Innodb redo log除外,它属于Innodb存储引擎实现的日不在此篇讨论)
-
The Error Log : 错误日志
错误日志,顾名思义,包含了mysqld在启动,关闭和服务器运行期间发生的任何错误信息和正常信息。这些信息都会写在Error Log上面。相关的参数配置如下:
log-error = /data/mysqldata/3306/mysql-error.log
-
The General Query Log : 通用查询日志
通用查询日志,是记录了mysqld正在做的事情,mysql服务器会记录客户端连接和不连接,以及来自客户端的每条sql语句的记录信息,当然,如果你想准确地知道客户端到底传了什么东西给mysqld,这个日志是非常的有用,但是它非常影响服务器的性能,所以,一般情况下,它是不开启的。相关的参数配置如下:
#设置为"0"代表不开启通用查询日志
general_log = 0
general_log_file = /data/mysqldata/3306/general_statement.log
-
The Binary Log : 二进制日志
二进制日志,包含了数据库的各种事件(events),这些事件描述了数据库的整个改动,例如表创建的操作和数据的改动(增,删,改操作)。它也包括了一些潜在的改动(例如:用了 一条delete语句,但是什么都没有删除掉),除非使用基于行复制row-based logging
,否则会包含所有改动数据的sql语句。二进制日志有两个重要的用途:
1.MySQL复制(For Replication) 二进制日志会记录master里面所有改动数据的语句,然后 slave会接受master的二进制日志,从而根据二进制日志,修改slave服务器上的数据。
2.MySQL恢复 数据库的恢复操作需要二进制日志,在对一个备份进行恢复之后,记录在二进制日志中的events可以re-executed,这些events可以使数据库进行基于时间点的增量恢复。(Point-in-Time (Incremental) Recovery)
相关的参数配置如下:
#开启binlog并指定binlog的位置
log-bin = /data/mysqldata/3306/binlog/mysql-bin
#binlog的格式有三种,STATEMENT模式(SBR),ROW模式(RBR),MIXED模式(MBR)
binlog_format= mixed
#为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=32m
#binlog 能够使用的最大cache 内存大小
max_binlog_cache_size=64m
#二进制日志的文件大小
max_binlog_size=512m
-
The Slow Query Log :慢查询日志
可以查看mysql服务器中运行比较慢的sql语句,这个在日常工作中,会经常用到。日志中包含了一些超过了参数 long_query_time 指定时间的sql语句。
参数配置如下:
#设置为"1"代表开启慢查询日志
slow_query_log = 1
slow_query_log_file = /data/mysqldata/3306/slow_statement.log
-
Relay log (与replication相关)
Relay log存放slave端通过I/O线程从Master端读取的二进制日志信息,然后在由SQL线程读取relay log日志信息并应用到slave端,对slave端做和master一样的数据操作
relay-log-index设置代表了记录relay日志存放位置的绝对路径。相关参数配置如下:
relay-log = /data/mysqldata/3306/binlog/relay-bin
relay-log-index = /data/mysqldata/3306/binlog/relay-bin.index