mysql日志的作用详解_mysql系列详解三:mysql中各类日志详解-技术流ken

1.前言

日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 。下面分别对他们进行介绍。

2.查询日志

1.查看查询日志变量

查询日志即查看日志记录了所有对 MySQL 数据库请求的信息,不论这些请求是否得到了正确的执行。默认为 主机名.log

mysql> show global variables like "%gen%log%";

+------------------+------------------------------------+

| Variable_name | Value |

+------------------+------------------------------------+

| general_log | OFF |

| general_log_file | /data/mysql/mysql3306/data/ken.log |

+------------------+------------------------------------+

2 rows in set (0.00 sec)

2.查询日志变量详解

1 log on|off: 指定是否记录查询日志 <<< mysql5.6开始就弃用该选项

2 general_log: 指定是否记录查询日志

3 log_output none|table|file: 指定将记录到的查询保存到什么位置

4 file: 保存成一个文件

5 table: 保存成一张表

6 none: 不记录

7 general_log_file: 指定将查询日志保存成哪个文件、叫什么名

2.慢查询日志

1.查看慢查询日志变量

慢查询日志用来记录响应时间超过阈值的SQL语句,所以我们可以设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。该阈值可以通过参数slow_launch_time来设置,默认为2秒。

1 mysql> show global variables like "%slow%";

2 +---------------------------+----------+

3 | Variable_name | Value |

4 +---------------------------+----------+

5 | log_slow_admin_statements | OFF |

6 | log_slow_slave_statements | ON |

7 | slow_launch_time | 2 |

8 | slow_query_log | ON |

9 | slow_query_log_file | slow.log |

10 +---------------------------+----------+

11 5 rows in set (0.00 sec)

2.慢查询日志变量详解

1 slow_query_log on|off: 指定是否启用慢查询日志

2 slow_query_log_file: 指定慢查询日志文件

3 slow_launch_time: 指定在多长时间内没有执行完额查询是慢查询

4 log_output: 指定将记录到的查询保存到什么位置

3.错误日志

1.查看错误日志变量

错误日志文件对MySQL的启动,运行,关闭过程进行了记录。

1 mysql> show global variables like "%error%";

2 +---------------------+--------------+

3 | Variable_name | Value |

4 +---------------------+--------------+

5 | binlog_error_action | ABORT_SERVER |

6 | log_error | ./error.log |

7 | log_error_verbosity | 3 |

8 | max_connect_errors | 100000 |

9 | max_error_count | 64 |

10 | slave_skip_errors | OFF |

11 +---------------------+--------------+

12 6 rows in set (0.00 sec)

2.错误日志变量详解

1 log_error: 指定错误日志的文件及其路径

2 log_warnings: 指定将哪个级别的警告日志记录到错误日志中

3 sql_warnings: 指定是否记录在执行sql语句时候所触发的经过信息

4.二进制日志

1.关于二进制日志以及二进制日志变量

二进制日志记录了对数据库执行更改的所有操作,但是不包括select 和 show 这类操作,因为这类操作对数据本身并没有修改,如果你还想记录select和show操作,那只能使用查询日志了,而不是二进制日志。

此外,二进制还包括了执行数据库更改操作的时间和执行时间等信息。 二进制日志主要有以下几种作用 :

恢复(recovery) : 某些数据的恢复需要二进制日志,如当一个数据库全备文件恢复后,我们可以通过二进制的日志进行 point-in-time 的恢复

复制(replication) : 通过复制和执行二进制日志使得一台远程的 MySQL 数据库(一般是slave 或者 standby) 与一台MySQL数据库(一般为master或者primary) 进行实时同步

审计(audit) :用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入攻击

1 mysql> show global variables like "%bin%";

2 +--------------------------------------------+--------------------------------------------+

3 | Variable_name | Value |

4 +--------------------------------------------+--------------------------------------------+

5 | bind_address | * |

6 | binlog_cache_size | 1048576 |

7 | binlog_checksum | CRC32 |

8 | binlog_direct_non_transactional_updates | OFF |

9 | binlog_error_action | ABORT_SERVER |

10 | binlog_format | ROW |

11 | binlog_group_commit_sync_delay | 0 |

12 | binlog_group_commit_sync_no_delay_count | 0

...

2.二进制日志变量详解

1 log_bin on|off: 也是指定是否启用二进制日志(全局的)

2 log_bin_basename /path/to/binlog: 指定二进制日志的文件的基名

3 log_bin_index /path/to/binlog.index: 指定二进制日志文件的索引文件

4 binlog_format row|mixex|statement: 指定基于那种方式进行记录

5 sync_binlog #: 指定隔多久将缓存中的信息刷新到二进制日志文件中。

6 -->每次提交事务,会将缓存中的内存刷新到二进制日志文件中。

7 -->默认每个sql语句是一个事务,而且默认事务会自动提交,所以,默认的性能很差

8 max_binlog_size #: 指定二进制日志文件的上限,超过上限回滚动

9 max_binlog_cache_size #: 指定二进制日志缓存空间大小,空间被填满,会自动滚动

10 sql_log_off on|off: 是否将一般的查询操作记录到二进制日志中

11 sql_log_bin on|off: 也是指定是否启用二进制日志(会话级别)

12 log_bin_trust_function_creators on|off: 指定是否允许创建可能导致不安全的函数

3.查看二进制日志文件

对于二进制日志文件来说,不像错误日志文件,慢查询日志文件那样用cat,vim等命令可以查看,它需要通过 MySQL 提供的工具 mysqlbinlog

1 [root@ken ~]# mysqlbinlog /data/mysql/mysql3306/logs/mysql-bin.000001

2 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;

3 /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

4 DELIMITER /*!*/;

5 # at 4

6 #181012 0:34:24 server id 1003306 end_log_pos 123 CRC32 0x27fde4a9 Start: binlog v 4, server v 5.7.23-log created 181012 0:34:24 at startup

7 ROLLBACK/*!*/;

8 BINLOG '

9 kHu/Ww8qTw8AdwAAAHsAAAAAAAQANS43LjIzLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

10 AAAAAAAAAAAAAAAAAACQe79bEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA

11 Aank/Sc=

12 '/*!*/;

13 # at 123

14 #181012 0:34:24 server id 1003306 end_log_pos 154 CRC32 0x4e3fc05f Previous-GTIDs

15 # [empty]

16 # at 154

17 #181012 0:34:26 server id 1003306 end_log_pos 177 CRC32 0x368d3215 Stop

18 SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;

19 DELIMITER ;

20 # End of log file

21 /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

22 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

5.中继日志

1.查看中继日志日志变量

用于实现mysql的主从复制

1 mysql> show global variables like "%relay%";

2 +---------------------------+--------------------------------------------+

3 | Variable_name | Value |

4 +---------------------------+--------------------------------------------+

5 | max_relay_log_size | 134217728 |

6 | relay_log | relay-bin |

7 | relay_log_basename | /data/mysql/mysql3306/data/relay-bin |

8 | relay_log_index | /data/mysql/mysql3306/data/relay-bin.index |

9 | relay_log_info_file | relay-log.info |

10 | relay_log_info_repository | FILE |

11 | relay_log_purge | ON |

12 | relay_log_recovery | ON |

13 | relay_log_space_limit | 0 |

14 | sync_relay_log | 10000 |

15 | sync_relay_log_info | 10000 |

16 +---------------------------+--------------------------------------------+

17 11 rows in set (0.00 sec)

2.二进制日志变量详解

1 relay_log fileName: 指定中继日志的文件名。【文件名为空,表示禁用了中继日志】

2 relay_log_index: 索引表

3 relay_log_info_file: 记录中继日志文件的相关信息

4 relay_log_purge: 指定是否自动删除无用的中继日志文件

5 relay_log_recovery: 是否可以对中继日志做自动恢复相关的配置

6 relay_log_space_limit: 指定中继日志可以占用的空间大小(0表示不限制)

3.SQL线程应用中继日志流程

86575182d0a8faf93ee0c241a3faeea9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值