1、数据库层面的文件有:
1.1 参数文件( my.cnf)
1.2 错误日志( error log)
错误日志文件 一般存放在数据目录下,以error.log作为文件名的结尾。
错误日志记录着 Mysql 的启动、运行、关闭过程中出现的问题。
1.3 慢查询日志( slow log)
慢查询日志 可以把 超过 参数 long_query_time
时间 的所有 SQL语句记录下来(需要开启慢查询日志),从而帮助 DBA 优化有问题的 SQL 语句。
long_query_time
默认 10 秒(5.1之后 可以定义微秒单位)
# 查看慢查询相关参数变量
show variables like '%slow%';
常用分析工具:mysqldumpslow 命令、 percona-toolkit 工具包
1.4 全量日志( general log)
general log 会记录 mysql 数据库 所有 操作 的 SQL 语句,包含 select 和 show 语句。
默认 该功能 是关闭的。
相关参数 log_output 用于 指定日志的存储方式
# 查看 log_output
show variables like '%log_output%';
类型:全局动态变量。
取值范围:FILE、TABLE、NONE。
FILE:表示以文件格式存储日志;
TABLE:表示以表格的方式存储日志,会在mysql 数据库下 创建一个 general_log 表。
NONE:表示 即使 general_log 开启,也不记录日志。
mysql数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,
如:log_output='FILE,TABLE'
建议使用FILE,TABLE比较影响性能。
1.5 二进制日志文件( binary log)
用于记录 mysql 数据库 真正执行更改的 所有 操作(DML语句:增删改),不包含那些没有修改任何数据的语句,不会记录 select 和 show 语句。
主要作用:
(1) 可以完成主从复制功能。
(2) 进行恢复操作。数据可以通过binlog 日志,使用 mysqlbinlog 命令,实现基于时间点和位置的恢复操作。
SHOW VARIABLES LIKE '%log_bin%';
使用 配置 参数 log-bin=[filename]可以启动二进制日志。
如果没有命名filename,则以主机名来作为二进制日志的文件名。
二进制日志文件默认存储在 数据 目录下。
如下图,binlog的后缀名是它的序号,号码是按顺序排列的。
# 列出当前 binlog 文件及值的大小
show binary logs;
# 查看 当前的日志 及状态
show master status;
目录下的 mysql-bin.index 文件是 二进制日志的 索引文件,用来记录产生的 二进制日志的序号。
相关参数:
(1)max_binlog_size,单个binlog的最大值。默认值为 1GB。
(2)binlog_cache_size,二进制日志缓存大小。
(3)sync_binlog,表示每写缓冲多次就同步到磁盘。
如果将N设为1,即sync_binlog=1表示采用同步写磁盘的方式来写二进制日志,这时写操作不使用才做系统的缓冲来写二进制日志。
(备注:该值默认为0,采用操作系统机制进行缓冲数据同步)
(4)expire_logs_days,二进制日志过期时间(单位:天)
(5)binlog-do-db 或 binlog-ignore-db,表示需要写入 或 忽略写入哪些库的日志,默认为空。
(6)log_slave_updates,改参数在 搭建 m -> s1 -> s2 这样的主从架构时,需要在 s1 上配置该参数,才能实现 s1 到 s2 的同步(log_slave_updates=1)。
(7)binlog_checksum,该参数的目的就是写入校验,取值范围:none、crc32(5.6之后,默认crc32)
(8)log_bin_use_v1_row_events,该参数表示 binlog 的版本信息
(9)binlog_row_image,取值范围:full、minimal、noblob三个值。
full:表示全部记录。
minimal:表示只记录要修改列的记录。
noblob:记录除了 blog 和 text 的所有字段。
默认使用 full 值。
1.6 审计日志( audit log)
数据库审计,能够实时记录网络上的数据库活动。
一般审计功能需要购买收费组件才能使用,开源常用 libaudit_plugin.so 审计插件。
查看 mysql-audit.json 文件,可以找到操作 SQL 语句的用户名、ip地址等信息。
1.7 中继日志( relay log)
主从复制中,从服务器 I/O 线程将主服务器的二进制日志读取过来并记录到从服务器本地文件(relay log)中,然后从服务器上的 SQL 线程会读取 relay-log 日志内容 并应用到从服务器。
1.8 套接字文件( socket)
mysql 有两种连接方式,网络连接 和 本地连接。
mysql.sock 文件是 服务器 与 本地客户端 进行通信 的 UNIX 套接字文件,其默认位置是 /tmp/mysql.sock
1.9 进程(pid)文件
mysql 数据库 是一个 单进程多线程模型的数据库,pid文件 用于记录 启动后的进程号。
2.0 表结构文件
2、存储引层面有:
- redo log 日志文件
redo log 又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。
- undo log 日志文件
undo 记录(insert、update、delete),undo log 只记录变更前的旧数据。
undo 记录默认别记录到系统表空间(ibdata1)中,从 MySQL 5.6开始,就可以使用独立的 undo 表空间。
最后编辑:admin 更新时间:2023-01-12 09:22