linux运维、架构之路-MySQL日志(三)

一、MySQL日志

1、错误日志

①配置方法

[mysqld]
log-error=/data/mysql/mysql.log

②查看配置方式

mysql> show variables like '%log%error%';
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| binlog_error_action | IGNORE_ERROR                     |
| log_error           | /application/mysql/data/db01.err |
+---------------------+----------------------------------+
2 rows in set (0.00 sec)

③作用

记录MySQL数据库的一般状态信息及报错信息,是数据库常规报错处理的常用日志

2、一般查询日志

①配置方法

[mysqld]
general_log=on
general_log_file=/data/mysql/server2.log

②查看配置方式

mysql> show variables like '%gen%';
+------------------+----------------------------------+
| Variable_name    | Value                            |
+------------------+----------------------------------+
| general_log      | OFF                              |
| general_log_file | /application/mysql/data/db01.log |
+------------------+----------------------------------+
2 rows in set (0.00 sec)

③作用

记录所有的已执行成功的操作,可以作为审计功能,一般情况下不会开,除非特殊要求:ELK日志收集

3、二进制日志

①二进制三种模式

row:行模式,数据行的变化过程 #推荐的格式
statement:语句模式
mixed:以上两者混合模式 

②开启二进制日志

[mysqld]
log-bin=/application/mysql/data/mysql-bin

③设置二进制的日志格式

[mysqld]
binlog-format=row

命令行修改日志格式

set global binlog_format = 'ROW';

④查看binlog使用的日志格式

mysql> show variables like '%format%';
+--------------------------+-------------------+
| Variable_name            | Value             |
+--------------------------+-------------------+
| binlog_format            | STATEMENT         |
| date_format              | %Y-%m-%d          |
| datetime_format          | %Y-%m-%d %H:%i:%s |
| default_week_format      | 0                 |
| innodb_file_format       | Antelope          |
| innodb_file_format_check | ON                |
| innodb_file_format_max   | Antelope          |
| time_format              | %H:%i:%s          |
+--------------------------+-------------------+
8 rows in set (0.00 sec)

⑤查看binlog设置

show variables like '%binlog%';

⑥查看binlog及位置点

show binary logs;
show master status;

⑦刷新binlog日志

mysqladmin flush logs

⑧截取binlog日志

mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003 >/tmp/inc.sql

⑨使用source恢复

mysql> set sql_log_bin=0; #在当前恢复窗口临时关闭二进制日志记录

⑩binlog日志作用

1、记录更改的二进制SQL语句
2、主从复制
3、增量数据备份 

4、二进制日志管理

二进制日志的删除,默认情况下,不会删除旧的日志文件

[mysqld]
SET GLOBAL expire_logs_days = 7;#保留7天

PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day;

PURGE BINARY LOGS TO 'mysql-bin.000010';#根据文件名删除日志:
reset master;#清除binlog日志

5、慢查询日志管理slow-log

①功能

记录所有条件内的慢SQL语句,优化的一种工具日志,将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的

②慢查询日志设置

long_query_time        #设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s
slow_query_log         #指定是否开启慢查询日志
slow_query_log_file    #指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log
min_examined_row_limit #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
log_queries_not_using_indexes#不使用索引的慢查询日志是否记录到索引  

③开启数据库的慢查询

[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1

④切割慢查询日志

cd /data/3306 &&
/bin/mv show.log slow.log.$(date +%F) &&
mysqladmin -uroot -p123456 flush-log #零点刷新

⑤慢查询分析工具

pt-query-digest  
成功最有效的方法就是向有经验的人学习!
原文地址:https://www.cnblogs.com/yanxinjiang/p/8287296.html