MySQL 3.2:MySQL 日志相关参数

3.2:MySQL 日志相关参数

MySQL 有两类参数:VARIABLES(变量参数)和 STATUS(状态参数);
每类参数的生效范围均为两种:SESSION(会话)和 GLOBAL(全局);
查看参数的命令:SHOW [GLOBAL|SESSION] VARIABLES [LIKE 'variable_name'];SHOW [GLOBAL|SESSION] STATUS [LIKE 'status_name'];
以下查看操作均为当前会话的变量参数配置(默认的会话变量参数会继承全局变量参数,除非存在运行时修改);

3.2.1:日志存储方式

  • 查看 MySQL 日志的存储方式:
MariaDB [(none)]> SHOW VARIABLES LIKE 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+

默认为 FILE,即以日志文件的方式存储查询日志和慢日志;

日志存储方式分为:

  • FILE:日志文件;
  • TABLE:表;
  • 二者可以同时存储;

3.2.2:查询日志

查询日志开启情况
  • 查看查询日志开启情况:
MariaDB [(none)]> SHOW VARIABLES LIKE 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+

默认不开启查询日志;

查询日志文件路径
  • 查看查询日志文件路径:
MariaDB [(none)]> SHOW VARIABLES LIKE 'general_log_file';
+------------------+-------------+
| Variable_name    | Value       |
+------------------+-------------+
| general_log_file | node103.log |
+------------------+-------------+

默认日志文件名为:server_id.log;

如果仅指定文件名,则相对路径指向的是 MySQL 的数据文件目录;
也可以指定绝对路径;

3.2.3:慢查询日志

慢查询日志开启情况
  • 查看慢查询日志开启情况:
MariaDB [(none)]> SHOW VARIABLES LIKE 'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | ON    |
+----------------+-------+

此参数还有一种表示方式:log_slow_queries

慢查询日志文件路径
  • 查看慢日志文件路径:
MariaDB [(none)]> SHOW VARIABLES LIKE 'slow_query_log_file';    
+---------------------+---------------------------------+
| Variable_name       | Value                           |
+---------------------+---------------------------------+
| slow_query_log_file | /data/mysql_logs/mysql-slow.log |
+---------------------+---------------------------------+

为配置文件中设置的 /data/mysql_logs/mysql-slow.log;

慢查询日志记录速率限制
  • 查看慢查询日志记录速率限制:
MariaDB [(none)]> SHOW VARIABLES LIKE 'log_slow_rate_limit';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| log_slow_rate_limit | 1     |
+---------------------+-------+

默认为 1;

限制慢日志记录速率的原因在于,如果数据库发生某种性能故障,导致此时很多查询操作都很慢,慢查询日志的记录频率很高,这时就没必要全都记录在慢查询日志中了;

慢查询时长定义
  • 查看慢查询时长定义:
MariaDB [(none)]> SHOW VARIABLES LIKE 'long_query_time';   
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 5.000000 |
+-----------------+----------+

查询时间查过 5s,即定义为慢查询,记录到慢查询日志中;

3.2.4:错误日志

错误日志共记录以下几类信息(不仅仅是错误信息):

  • mysql 程序运行过程中产生的错误信息;

  • mysql 程序的启动和关闭过程中输出的信息;

  • event scheduler(事件调度器)运行时产生的信息;

  • 主从复制架构中,从服务器的复制线程(IO_THREAD、SQL_THREAD)启动时产生的日志;

错误日志文件路径
  • 查看错误日志开启情况(错误日志文件路径):
MariaDB [(none)]> SHOW VARIABLES LIKE 'log_error';      
+---------------+----------------------------------+
| Variable_name | Value                            |
+---------------+----------------------------------+
| log_error     | /data/mysql_logs/mysql-error.log |
+---------------+----------------------------------+

定义了日志文件路径即表示开启,关闭为 OFF

警告信息的记录级别

警告信息也会记录在错误日志中,log_warnings 定义警告信息的记录级别;

  • 查看警告信息的记录级别:
MariaDB [(none)]> SHOW VARIABLES LIKE 'log_warnings';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings  | 1     |
+---------------+-------+

默认为 1;
该参数不是布尔类型,不支持{ON|OFF}类型的定义;

log_warnings 值:

  • 0:表示不记录警告信息;
  • 1:表示记录警告信息;
  • 也可以设置为大于 1,具体含义未深究;

3.2.5:二进制日志

二进制日志记录格式
  • 查看当前的二进制日志记录格式:
MariaDB [(none)]> SHOW VARIABLES LIKE 'binlog_format';       
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+

默认为 STATEMENT;

二进制日志可以记录:

  • STATEMENT:引起数据改变和存在引起数据改变可能性的语句;
  • ROW:改变后的结果;
  • MIXED:也可以二者混合。
二进制日志开启情况
  • 查看当前二进制日志是否开启:
MariaDB [(none)]> SHOW VARIABLES LIKE 'log_bin';      
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+

配置文件中指定了二进制日志文件的路径,命令行中只能看到是否开启;

单个二进制日志文件的最大值
  • 查看单个二进制日志文件的最大值:
MariaDB [(none)]> SHOW VARIABLES LIKE 'max_binlog_size';
+-----------------+------------+
| Variable_name   | Value      |
+-----------------+------------+
| max_binlog_size | 1073741824 |
+-----------------+------------+

默认 1G,达到这个值会自然滚动;
某些操作会导致二进制日志文件强制滚动,比如 flush logs,mysql 重新启动等;

二进制日志刷写机制
  • 查看当前二进制日志的刷写机制:
MariaDB [(none)]> SHOW VARIABLES LIKE 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
+---------------+-------+

默认为 0;

该参数是数值型:

  • 0:表示 MySQL 本身不控制 binlog 的刷写,由内核自己控制从 log buffer 到 log file 的刷写;
  • 1:表示 1 次事务刷写 1次;
  • n:表示 n 次事务刷写 1次;

设置为 0 的性能高,但不可靠;
设置为 1 最可靠,但性能损耗较大;
应该根据业务和系统负载情况选择一个合理的值,综合考虑数据一致性和性能;

二进制日志文件列表
  • 查看当前已有的二进制日志文件列表:
MariaDB [(none)]> SHOW MASTER LOGS;
+---------------------+-----------+
| Log_name            | File_size |
+---------------------+-----------+
| mysql-binlog.000001 |     30361 |
| mysql-binlog.000002 |   1038814 |
| mysql-binlog.000003 |      1853 |
| mysql-binlog.000004 |       245 |
+---------------------+-----------+

MariaDB [(none)]> SHOW BINARY LOGS;
+---------------------+-----------+
| Log_name            | File_size |
+---------------------+-----------+
| mysql-binlog.000001 |     30361 |
| mysql-binlog.000002 |   1038814 |
| mysql-binlog.000003 |      1853 |
| mysql-binlog.000004 |       245 |
+---------------------+-----------+
正在使用的二进制日志文件
  • 查看当前正在使用的二进制日志文件:
MariaDB [(none)]> SHOW MASTER STATUS;
+---------------------+----------+--------------+------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| mysql-binlog.000004 |      245 |              |                  |
+---------------------+----------+--------------+------------------+

File 为当前正在使用的二进制日志文件;

Position 为最近一次事件的结束位置(Position 是以字节为单位的偏移量,记录每个事件的位置);

Binlog_Do_DB 和 Binlog_Ignore_DB 是 “复制过滤器” 相关的参数,后续实验过程会提及;

查看二进制日志中的事件
  • 查看 mysql-binlog.000003 中起始位置为 1483 的事件(操作):
MariaDB [(none)]> SHOW BINLOG EVENTS IN 'mysql-binlog.000003' FROM 1483 LIMIT 1;   
+---------------------+------+------------+-----------+-------------+---------------------------+
| Log_name            | Pos  | Event_type | Server_id | End_log_pos | Info                      |
+---------------------+------+------------+-----------+-------------+---------------------------+
| mysql-binlog.000003 | 1483 | Query      |       103 |        1576 | CREATE DATABASE sample_db |
+---------------------+------+------------+-----------+-------------+---------------------------+
mysqlbinlog 命令

mysqlbinlog 命令是专用于查看 binlog 的:

  • 使用 mysqlbinlog 查看和上面相同的事件:
[root@node103 ~]# mysqlbinlog /data/mysql_logs/mysql-binlog.000003 -j 1483 --stop-position=1576
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#201125  9:59:09 server id 103  end_log_pos 245         Start: binlog v 4, server v 5.5.68-MariaDB created 201125  9:59:09 at startup
ROLLBACK/*!*/;
BINLOG '
bbq9Xw9nAAAA8QAAAPUAAAAAAAQANS41LjY4LU1hcmlhREIAbG9nAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABtur1fEzgNAAgAEgAEBAQEEgAA2QAEGggAAAAICAgCAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAMYjJEw==
'/*!*/;
# at 1483
#201125 10:17:49 server id 103  end_log_pos 1576        Query   thread_id=10    exec_time=0     error_code=0
SET TIMESTAMP=1606270669/*!*/;
SET @@session.pseudo_thread_id=10/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
CREATE DATABASE sample_db
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

mysqlbinlog 的常用选项:

  • –start-datetime=“YYYY-MM-DD hh:mm:ss”
    指定要查看的起始时间点;

  • –stop-datetime=“YYYY-MM-DD hh:mm:ss”
    指定要查看的结束时间点;

  • -j, --start-position=INT
    指定要查看的起始位置;

  • –stop-position=INT

    指定要查看的起始位置;

3.2.6:中继日志

  • 查看中继日志开启情况(中继日志文件路径):
MariaDB [(none)]> SHOW VARIABLES LIKE 'relay_log';  
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| relay_log     | /data/mysql_logs/mysql-relay |
+---------------+------------------------------+

为配置文件中设置的路径;设置了路径即表示开启中继日志;

中继日志主要用于主从复制架构中,在从服务器上开启中继日志,记录主服务器的二进制日志文件同步过来的事件。

3.2.7:事务日志

相关查询操作已包含在《MySQL 存储引擎相关参数》 - InnDB 事务日志中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值