内容概述:
数据库服务内容概述
数据库服务日志分类
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
--- 取出前三名慢查询语句
评论