mysql日志类型

一、mysql的日志类型

  • 普通日志
  • 慢查询日志
  • 错误日志
  • binlog日志
  • 中继日志

1)普通日志

  • general_log开启后会记录所有执行的sql,所以开启后很容易导致磁盘爆满,一般只是用于临时使用的时候开启,使用完后关闭。日志保存在general_log_file的路径下。
## 查看普通的日志是否开启,默认不开启,一般不开启
mysql> show variables like 'general_log%';
+------------------+--------------------------------+
| Variable_name    | Value                          |
+------------------+--------------------------------+
| general_log      | OFF                            |
| general_log_file | /data/mysql_data/k8s-node2.log |
+------------------+--------------------------------+
2 rows in set (0.00 sec)

2)慢查询日志

  • SQL查询时间超过设置阈值时间,则记录为慢查询sql。主要用于优化,性能排查等。
## 查看慢查询的阈值
show global variables like 'long_query_time';

## 设置慢查询时间
set global long_query_time = 5;

## 查看是否开启慢查询
show variables like 'slow_query_log';

## 开启慢查询
set global slow_query_log=on;

## 查询慢日志输出格式
show variables like 'log_output';

## 查看慢查询的相关配置
show variables like '%slow%';
+---------------------------+-------------------------------------+
| Variable_name             | Value                               |
+---------------------------+-------------------------------------+
| log_slow_admin_statements | OFF                                 |
| log_slow_extra            | OFF                                 |
| log_slow_slave_statements | OFF                                 |
| slow_launch_time          | 2                                   |
| slow_query_log            | ON                                  |
| slow_query_log_file       | /data/mysql_data/k8s-node2-slow.log |
+---------------------------+-------------------------------------+
6 rows in set (0.00 sec)

3)错误日志

  • 记录执行过程的错误信息,告警信息
  • 记录mysql启动,关闭过程信息
  • 复制的一些IO信息
  • 事件调度器运行事件产生的信息

PS: 错误日志如果不清理或删除,则会一直增长。5.5.7之前可以通过命令mysqladmin flush-logs命令删除,5.5.7版本之后可以通过mv备份进行删除。

## 查看错误日志存储位置
show variables like 'log_error';
+---------------+---------------------------+
| Variable_name | Value                     |
+---------------+---------------------------+
| log_error     | /data/mysql_log/mysql.log |
+---------------+---------------------------+
1 row in set (0.00 sec)

## 查看log_warnings的配置
show variables like 'log_warnings';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings  | 2     |
+---------------+-------+
1 row in set (0.00 sec)
相关参数说明:
  • log-error:定义错误日志的功能和错误日志的存储位置
  • log-warnings:定义是否将警告信息记录在错误日志,在8.0版本之后该参数被移除
    • 0:表示不记录警告信息
    • 1:表示警告信息一并记录到错误日志中
    • 大于1:表示"失败的连接"的信息和创建新连接时"拒接访问"类的错误信息也会被记录到错误日志中。
  • log_error_verbosity:系统变量,从5.7.2版本开始,主要首选该参数,而不是log-warnings
    • 1:错误信息
    • 2:错误信息和告警信息
    • 3:错误信息,告警信息和通知信息

4)binlog日志

  • mysql binlog日志记录了对mysql数据库执行更改的所有操作,但是不包括select和show这类的操作。主要的作用是复制,恢复,审计。
## 查看binlog的最新位点
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 |      155 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

## 查看当前系统上所有的二进制日志文件
show binary logs;

## 查看binlog的相关配置 
show variables like '%log_bin%';
+---------------------------------+---------------------------------+
| Variable_name                   | Value                           |
+---------------------------------+---------------------------------+
| log_bin                         | ON                              |
| log_bin_basename                | /data/mysql_log/mysql-bin       |
| log_bin_index                   | /data/mysql_log/mysql-bin.index |
| log_bin_trust_function_creators | OFF                             |
| log_bin_use_v1_row_events       | OFF                             |
| sql_log_bin                     | ON                              |
+---------------------------------+---------------------------------+
6 rows in set (0.00 sec)

## 临时关闭当前会话的binlog
set session sql_log_bin = OFF;

## 查看binlog日志大小设置相关参数
show variables like 'max_binlog%';
+----------------------------+----------------------+
| Variable_name              | Value                |
+----------------------------+----------------------+
| max_binlog_cache_size      | 18446744073709547520 |
| max_binlog_size            | 1073741824           |
| max_binlog_stmt_cache_size | 18446744073709547520 |
+----------------------------+----------------------+
3 rows in set (0.00 sec)

相关参数说明:
  • log_bin:是否开启二进制日志文件
  • log_bin_basename:binlog存储位置
  • log_bin_index:binlog日志下标方式
  • sql_log_bin:会话级别,用于控制二进制日志信息是否记录进binlog里面

5)中继日志
relay log日志文件和binlog日志文件格式相同,主要用于从库的复制。slave先从master读取二进制日志数据,写入从库本地,后继续再异步由SQL线程读取解析relay log为对应的sql命令执行。

## 查询中继日志相关配置信息
show variables like '%relay_log%';
+---------------------------+---------------------------------+
| Variable_name             | Value                           |
+---------------------------+---------------------------------+
| max_relay_log_size        | 0                               |
| relay_log                 | /data/mysql_log/relay-bin.index |
| relay_log_basename        | /data/mysql_log/relay-bin       |
| relay_log_index           | /data/mysql_log/relay-bin.index |
| relay_log_info_file       | relay-log.info                  |
| relay_log_info_repository | TABLE                           |
| relay_log_purge           | ON                              |
| relay_log_recovery        | OFF                             |
| relay_log_space_limit     | 0                               |
| sync_relay_log            | 10000                           |
| sync_relay_log_info       | 10000                           |
+---------------------------+---------------------------------+
11 rows in set (0.00 sec)

相关参数说明:
  • relay_log:中继日志存储位置
  • relay_log_purge:是否自动清空中继日志
  • relay_log_recovery:当从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,从而保证relay-log的完整性。
  • relay_log_info_file:定义relay-log.info的位置和名称
  • relay-log.info:记录master主库的binary_log的恢复位置和从库relay_log的位置

二、二进制文件格式

mysql binlog有三种格式:
  • statement:基于语句
  • row:基于行
  • mixed:混合模式
## 查看当前二进制日志格式
show variables like 'binlog_format';

1、statement

  • 5.7版本之前默认二进制日志格式
  • 记录每一条修改的SQL语句,在批量修改时会记录批量修改SQL语句事件,而不是单条SQL语句。

1)优点:

  • 日志记录量较小,节约磁盘及网络I/O

2)缺点:

  • 必须要记录上下文信息,保证在从服务器上执行结果和主服务器上相同
  • 对一些非确定性函数无法进行正确复制,如UUID(),USER()等
  • 可能造成mysql复制的主备服务器数据不一致

2、row

  • 5.7之后默认二进制日志格式
  • 不记录SQL上下文相关信息,仅记录增删查改的数据行信息,通过binlog_row_image=full|minimal|noblob控制日方式

binlog_row_image参数:

  • full:数据修改时会记录一行数据所有列的内容,无论这些列是否被修改过。
  • minimal:只会记录被修改前与修改后的内容
  • noblob:和full方式二相似,仅仅当blog或text这些列没有进行修改时,不会记录这些属性的列

1)优点:

  • 使mysql主从复制更加安全
  • 对每一行数据的修改比基于段的复制高效
  • 有利于数据恢复

2)缺点:

  • 日志量较大

3、mixed

  • MySQL自行判断选择合适的方式基于语句或基于行记录日志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值