Mysql文件

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Mysql文件包括:参数文件、日志文件、socket文件、pid文件、mysql表结构文件、存储引擎文件、参数文件、日志文件,通过了解mysql的文件相关组成,我们可以知道mysql的组成。

一、Mysql相关文件

参数文件:告诉mysql实例启动时在哪里可以找到数据库文件,并指定初始化参数

日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件,如错误日志文件、二进制日志文件、慢查询日志文件、查询日志文件等。

socket文件:当用unix域套接字方式进行连接时需要的文件

pid文件:MySQL实例的进程pid文件

mysql表结构文件:用来存储mysql表结构定义的文件

存储引擎文件:真正存储记录和索引等数据

参数文件:通常分为静态参数和动态参数

其中静态参数类似于只读,不可修改

动态参数可以进行修改,同时修改之后,会生效。

日志文件分为:

错误日志文件 error log

慢查询日志文件 slow log

二进制日志文件 binlog

查询日志文件 log


二、错误日志文件error log

错误日志文件对mysql的启动、运行、关闭过程进行了记录,DBA进行文件排查时首先查询该文件以定位问题。

可以通过show variables like "log_error"来定位文件。


三、慢查询日志

可帮助DBA定位可能存在问题的sql语句

通常可以在mysql启动时设置一个阀值,将运行时间超过该值的所有sql语句都记录在慢查询日志文件中。参数:log_query_time,默认值为10秒。从mysql5.1开始,log_query_time开始以微秒记录sql运行的时间。

在默认情况下,mysql数据库并不启动慢查询日志,用户需要手工将这个参数设置为on。

MySQL5.6.5版本开始,log_throttle_queries_not_using_indexes用来记录慢sql未使用sql的次数,如果没有这个值,慢sql打印的日志文件不断增大,因此为了避免此种情况,DBA可通过此参数进行设置。

mysqldumpslow日志文件

查询执行时间最长的10条sql语句:

mysqldumpslow -s al -n 10 日志文件.log

slow_log表的定义使用的是csv引擎,对大数据量下的查询效率不高。

slow_query_type:

0表示不将sql打印到slow_log

1表示根据运行时间将sql记录到slow_log

2表示根据逻辑I/O次数将sql记录到slow_log

3表示根据运行时间+逻辑IO次数将sql记录到slow_log


四、查询日志

主机名.log,从mysql5.1开始,可以将查询日志的记录放入mysql架构下的general_log表中。


五、binglog二进制日志文件

记录了对mysql数据库执行更改的所有操作,但不包括select和show这类操作。

二进制文件的作用:

恢复:比如全备文件恢复后,用户可以通过二进制文件进行point-in-time的恢复。

复制:通过复制和执行二进制日志文件使一台远程的mysql数据库与一台mysql数据库进行实时同步。

审计

通过配置参数:log-bin [=name] 可以启动二进制日志,如果不指定则默认二进制日志文件名为主机名,后缀为二进制日志的序列号。比如:bin_log.00001、

bin_log.index为索引文件

binlog在配置文件中的参数:

max_binlog_size 最大binlog大小,默认1.1G,超过该值会产生新的binlog文件,后缀+1

binlog_cache_size,基于会话,默认大小32KB

sync_binlog =[N]表示每写缓冲多少次就同步到磁盘,默认值为0,如果使用innodb存储引擎进行复制,并且想得到最大的高可用性,建议,将该值设置为on。配合XA使用。

binlog-do-db

binlog-ignore

log-slave-update

binlog_format:记录二进制日志的格式

分为三种:

statement、row、mixed

statement:采用逻辑sql语句记录

row:记录表更改的数据

mixed:默认情况下使用statement进行记录,但在一些情况下会使用row格式:

1)表引擎为NDB,对表中的DML都会以ROW记录

2)使用UUID()、USER()、CURRENT_USER()、FOUND_ROES()、ROW_COUNT()邓不确定函数

3)使用insert delay语句

4)使用了用户定义的函数(UDF)

5)使用了临时表

设置方式,比如设置为row格式:

set @@session.binlog_format='ROW';

查看binlog设置格式:

select @@session.binlog_format;

设置全局的binlog格式:

set GLOBAL binlog_format='ROW';


六、套接字文件

可由参数socket控制,一般在/tmp目录下,名为mysql.sock。


七、pid文件

当mysql实例启动时,会将自己的进程id写入到pid文件,该文件可由参数pid_file控制,默认在数据库目录下,名为主机名.pid。


八、表结构定义文件

.frm文件,每个表都会有与之对应的frm文件,这个文件记录了该表的表结构定义。

frm文件还用来存放视图定义,如用户创建了一个v_a视图,那么对应地会产生一个v_a.frm文件,用来记录视图定义,该文件是文本文件,以v_a.frm为例,可以通过cat v_a.frm命令查看v_a.frm。

所有未提交的二进制日志会被记录到一个缓冲中去,等该事务提交时直接将缓冲中的二进制日志写入到二进制文件,而该缓存的大小由bin_log_cache_siz决定,默认32KB。


九、innodb的引擎文件

表空间文件和重做日志文件

表空间文件

innodb采用将存储的数据按表空间tablespace进行存放的设计,在默认设置下会有一个初始化大小为10MB,名为ibdata1的文件,该文件就是默认的表空间文件tablespace file,用户可以通过参数innodb_data_file_path对其进行设置,格式:

innodb_data_file_path=datafile_space1[;datafile_spec2]…

设置innodb_data_file_path参数后,所有基于innodb存储引擎的表的数据都会记录到该共享表空间中。若设置了参数innodb_file_per_table,用户可以将每个基于innodb存储引擎的表产生一个独立表空间,后缀名格式.ibd。

单点的表空间文件仅存储该表的数据、索引和插入缓冲bitmap等信息,其余信息还是存放在默认表空间中。

重做日志文件redo log file

每个innodb存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_log_file0、ib_log_file1。

参数影响:

innodb_log_file_size 重做日志大小,1.2.x版本将该限制扩大为512G

innodb_log_file_in_group 重做日志个数,默认2个。

innodb_mirrored_log_groups 镜像组数,默认1,表示只有一个日志文件组,没有镜像,如果磁盘本身做了高可用,则可以不开启重做日志镜像功能。

innodb_log_group_home_dir 目录,默认./。

如果重做日志设置太小,则频繁发生Asyncheckpoint,导致性能抖动。

如果重做日志超过检查点的阀值,则必须将缓冲池中的脏页列表中的部分脏数据页写回磁盘,这时会导致用户线程阻塞。

重做日志条目的组成:

重做日志类型、空间ID、页的偏移量、每个重做日志的数据部分

redo_log_type:占用1字节,表示重做日志的类型

space 表示表空间的ID,但用压缩的方式,因此占用的空间可能小于4字节

page_no:表示页的偏移量,同样采用压缩的方式

redo_log_body:表示每个重做日志的数据部分,恢复时需要调用相应的函数进行解析。

重做日志先写入到 redo log buffer,然后按照一定的条件顺序写入日志文件。512个字节(扇区),写入的最小单位。

触发写磁盘的过程是由参数innodb_flush_log_at_trx_commit控制,表示在提交时,处理重做日志的方式。

0:当提交事务时,并不将事务的重做日志写入磁盘上的日志文件

1:表示执行commit时将重做日志缓冲同步写到磁盘

2:表示将重做日志异步写入到磁盘

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
17天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
125 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
2月前
|
SQL 关系型数据库 MySQL
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
34 2
|
2月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
208 1
|
3月前
|
SQL 关系型数据库 MySQL
Python小技巧——将CSV文件导入到MySQL数据库
Python小技巧——将CSV文件导入到MySQL数据库
68 0
|
4月前
|
存储 SQL 关系型数据库
mysql体系结构及主要文件
了解MySQL的体系结构和它的主要文件,能够帮助数据库管理员和开发者更好地管理和优化数据库。这对于数据库的正常运行、性能优化、数据恢复和系统维护来说是至关重要的。通过对这些组件的深入理解,可以更容易地解决数据库问题,并在必要时定制或调整数据库的行为以满足特定的应用需求。
63 0
|
4月前
|
SQL 关系型数据库 MySQL
【MySQL核心】MySQL无法启动?批量恢复MySQL 物理文件-拯救即将跑路的你
【MySQL核心】MySQL无法启动?批量恢复MySQL 物理文件-拯救即将跑路的你
|
4月前
|
关系型数据库 MySQL Windows
MySQL数据导入:MySQL 导入 Excel 文件.md
MySQL数据导入:MySQL 导入 Excel 文件.md
|
5月前
|
存储 关系型数据库 MySQL
面试题MySQL问题之FastDFS中的文件重复上传如何解决
面试题MySQL问题之FastDFS中的文件重复上传如何解决
45 1
|
5月前
|
关系型数据库 MySQL Java
下一篇
无影云桌面