mysql生成或相关联的日志文件种类繁多,这里重点关注与mysql数据库服务相关mysql
的几类日志文件:sql
一、错误日志:数据库
记录mysql服务进程mysql的在启动/关闭/运行过程当中遇到的错误信息;session
[mysqld_safe]日志
log-error=/data/3306/mysql.errcode
二、查询日志:orm
(1)普通查询日志:索引
记录客户端链接信息和执行的sql语句信息;进程
[mysqld]io
#general_log = ON
#将全部到达MySQL Server的SQL语句记录下来,默认关闭
#general_log_file = /data/3306/data
#general_log,默认在数据库的data目录下;
(2)慢查询日志:
记录执行时间超出指定值(log_query_time)的sql语句;
[mysqld]
slow_query_log = ON
long_query_time = 2
slow_query_log_file = /data/3306/mysql-slow.log
#log-queries-not-using-indexes
#若是运行的SQL语句没有使用索引,mysql会将这条SQL语句记录到慢查询日志文件中。
三、二进制日志:
记录数据被修改的相关信息;
[mysqld]
log-bin = /data/3306/mysql-bin
#打开mysql的binlog日志;
max_binlog_size = 512M
#binlog的最大值是多少;
expire_logs_days = 7
#超过7天的binlog会被删除;
mysql> show variables like '%log_bin%';
sql_log_bin ON
#通常打开log-bin就打开了sql_log_bin记录功能,使用set global sql_log_bin=off时
临时不记录binlog开关,用于增量恢复时不记录某个时间点的binlog;
3 rows in set (0.01 sec)
(1)二进制的三种模式:
1)语句级:
statement(默认),包含的是原始的sql语句;
2)行级:
row,包含的是行的更改信息;
3)混合级:
mixed,前两种模式的结合,mysql根据实际开销状况选择到底选择哪一种二进制模式;
4)修改binlog模式的方法:
配置文件修改my.cnf:
[mysqld]
binlog_format = mixed #row,statement
在线修改:
set session binlog_format = mixed;
set global binlog_format = mixed;
5)查看binlog日志的方法:
binlog日志模式为row或者时statement时使用‘mysqlbinlog /data/3306/mysql-bin.000007’命令查看;
binlog日志模式为mixed时,使用‘mysqlbinlog --base64-output=decode-rows -v /data/3306/mysql-bin.000007’命令查看;
6)查看binlog的pos点:
show master logs; #查看binlog文件和对应的pos点的列表;
show master status; #查看当前binlog文件和对应的pos点;
7)对日志文件进行切割的手动方法:
mysqladmin -uroot -p123456 flush-log