1.日志类型
日志文件 | 记入文件中的信息类型 |
错误日志 | 记录启动、运行或停止时出现的问题。 |
查询日志 | 记录建立的客户端连接和执行的语句。 |
二进制日志 | 记录所有更改数据的语句。主要用于复制和即时点恢复。 |
慢日志 | 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。 |
事务日志 | 记录InnoDB等支持事务的存储引擎执行事务时产生的日志。 |
1-2.错误日志
错误日志内容:
1.服务器启动和关闭过程中的信息服务器运行过程中的错误信息
2.事件调度器运行一个时间是产生的信息
3.在从服务器上启动从服务器进程是产生的信息
错误日志定义:(在/etc/my.cnf)中定义,定义完后重启服务
--log-error[=file_name]
如果没有给定file_name指,那么错误日志名是host_name.err 并在数据目录中写入日志文件。
如果执行flush logs,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出--log-error选 项,则不会重新命名)。
1-3通用查询日志
启动开关:general_log={ON|OFF}
日志文件变量:general_log_file[=/PATH/TO/file]
全局日志开关:log={ON|OFF} 该开关打开后,所有日志都会被启用记录类型:log_output={TABLE|FILE|NONE}:
因此,要启用通用查询日志,需要至少配置general_log=ON,log_output={TABLE|FILE}。而
general_log_file如果没有指定,默认名是host_name.log。 看看上述几个值的默认配置:
SHOW GLOBAL VARIABLES LIKE '%general_log%';
mysql> SHOW GLOBAL VARIABLES LIKE '%log_output%';
1-4慢查询日志
MySQL如果启用了slow_query_log=ON选项,就会记录执行时间超过long_query_time的查询(初使表锁 定的时间不算作执行时间)。日志记录文件为slow_query_log_file[=file_name],如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
默认与慢查询相关变量:
mysql> SHOW GLOBAL VARIABLES LIKE '%slow_query_log%';
默认没有启用慢查询,为了服务器调优,建议开启开启方法:
SET GLOBAL slow_query_log=ON; 当前生效,永久有效配置文件中设置使用mysqldumpslow命令获得日志中显示的查询摘要来处理慢查询日志
# mysqldumpslow slow.log
如果查询时长超过long_query_time的定义值(默认10秒),即为慢查询:
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';
1-5二进制日志
二进制日志包含内容:
二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语 句
语句以“事件”的形式保存,它描述数据更改。二进制日志还包含关于每个更新数据库的语句的执行时间信息。 它不包含没有修改任何数据的语句。
二进制日志启动开关:log-bin [= file_name]
查看二进制日志的工具为:mysqlbinlog
二进制日志的管理
日志滚动
在my.cnf中设定max_binlog_size = 200M,表示限制二进制日志最大尺寸为200M,超过200M后进行滚动。MySQL的滚动方式与其他日志不太一样,滚动时会创建一个新的编号大1的日志用于记录最新的日志,而原 日志名字不会被改变。每次重启MySQL服务,日志都会自动滚动一次。
另外如果需要手动滚动,则使用命令 mysql> FLUSH LOGS;
查看有哪些二进制日志文件:mysql> SHOW BINARY LOGS;
查看当前正在使用的是哪一个二进制日志文件:mysql> SHOW MASTER STATUS;
查看二进制日志内容:mysql> SHOW BINLOG EVENTS IN 'mysqld-binlog.000002';
删除二进制日志文件:
二进制日志文件不能直接删除的,如果使用rm等命令直接删除日志文件,可能导致数据库的崩溃。
必须使用命令PURGE删除日志,语法如下:PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
用reset master命令删除所有日志,新日志重新从000001开始编号
用purge master logs to 'filename.******' 命令可以删除指定编号前的所有日志