内容概述:

  1. 数据库服务内容概述

  2. 数据库服务日志分类

1. 数据库服务日志概述

数据库中会有多个不同的日志信息,分别保存在不同的文件中

服务层:多种不同日志,主要会记录服务运行情况,数据信息存储情况(用于数据恢复,数据同步)

引擎层:多种不同的日志,redo undo dwr日志

2. 数据库服务日志分类

服务层有四个重点关注的日志:

general_log:

数据库运行过程中所有操作数据库的记录信息

作用说明:可以用于测试和审计 代码

配置应用:

mysql> show variables like '%general_log%';
+------------------+--------------------------+
| Variable_name    | Value                    |
+------------------+--------------------------+
| general_log      | OFF                      |
| general_log_file | /data/3306/data/db01.log |
+------------------+--------------------------+
--- general_log 默认日志处于关闭,建议在需要调试工作时开启
--- general_log_file 定义日志文件存储路径信息,建议日志文件路径与数据存储路径分开。
error_log:

数据库服务运行状态日志,会记录数据库服务影响情况,note error.....

作用说明:当数据库服务无法启动时,需要关注错误日志

配置应用:

log_error=/PATH/xxx.err

定义日志文件存储的路径信息,建议日志文件路径与数据存放路径分离

bin_log:

主要存储数据库操作命令语句信息(对元数据有改动的操作)

作用说明:可以实现数据恢复(增量数据同步),可以实现数据同步

配置说明:

log_bin=ON

表示是否开启binlog日志

log_bin=/PATH/db01-binlog

激活日志功能

查看有多少个binlog日志

mysql> show binary logs;

查看binlog日志的状态信息

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000019 |      156 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
--- Postion:记录日志事件变化的位置点
--- Binlog_Do_DB: 白名单设置信息  主从
--- Binlog_Ignore_DB:黑名单设置信息 主从
--- Executed_Gtid_Set:设置全局事务标号功能

查看binlog日志的信息

mysql> show binlog events in 'binlog.000019';
+---------------+-----+----------------+-----------+-------------+-----------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                              |
+---------------+-----+----------------+-----------+-------------+-----------------------------------+
| binlog.000019 |   4 | Format_desc    |         1 |         125 | Server ver: 8.0.26, Binlog ver: 4 |
| binlog.000019 | 125 | Previous_gtids |         1 |         156 |                                   |
+---------------+-----+----------------+-----------+-------------+-----------------------------------+

日志信息滚动切割:

--- 方式一
mysql> flush logs;

--- 方式二
mysqladmin   -uroot -p flush-logs

--- 方式三
systemctl restart mysqld

--- 方式四
mysql> select @@max_binlog_size;
设置binlog日志切割时的存储容量上限

日志信息清理方法:

方式一:
binlog_expire_logs_seconds=2592000
-- 按照秒级进行binlog日志清理
expire_logs_day=0
-- 按照天进行binlog日志清理

方式二
purge binary logs to 'db01-binlog.00001';
--将日志清理到哪个文件

日志的远程备份:

利用专门的存储服务器,将数据库中binlog日志进行同步备份

 nohup mysqlbinlog -R --host=10.0.0.51 --user=root --password=123456 --port=3307 --raw --stop-never db-binlog.000006 &
---
--host 指定主机
--user 指定用户
--password 密码
--port 端口
--raw 二进制方式
--stop-never 一直运行
db-binlog.000006 从这个文件开始同步
nohup  后台永久运行
slow_log:

数据库服务器慢查询日志,会记录查询操作比较慢的语句 select 优化

作用说明:关注慢查询语句,可以减少对磁盘IO的消耗

配置应用:

mysql> select @@slow_query_log;
+------------------+
| @@slow_query_log |
+------------------+
|                0 |
+------------------+
--- 是否激活慢查询日志功能

mysql> select @@slow_query_log_file;
+-------------------------------+
| @@slow_query_log_file         |
+-------------------------------+
| /data/3306/data/db01-slow.log |
+-------------------------------+
-- 用于设置日志的位置

 mysql> select @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
|         10.000000 |
+-------------------+
-- 用于定义超过该时间后属于慢查询

mysql> select @@log_queries_not_using_indexes;
+---------------------------------+
| @@log_queries_not_using_indexes |
+---------------------------------+
|                               0 |
+---------------------------------+
-- 识别是否由于没有走索引,而出现慢查询信息

日志分析方法:

mysql> mysqldumpslow -s c -t 3 /data/slow.log
--- 取出前三名慢查询语句