Mysql文件

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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:表示将重做日志异步写入到磁盘

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 SQL 关系型数据库
MySQL 系统文件你了解吗
MySQL 系统文件你了解吗
37 0
|
4月前
|
存储 关系型数据库 MySQL
Linux的dev/vda1文件满了导致MySQL无法写入
今天查看两个月前上线的小项目,发现运行非常慢,而且增删改查失效了(吓我一大跳),急急忙忙的就开始了我的线上问题排查之路。/dev/vda1是 Linux 系统中的一个设备文件,它表示第一个虚拟磁盘(vda)的第一个分区(1)。在大多数 Linux 发行版中,这是系统根分区的默认位置。如果您要对/dev/vda1进行操作(例如挂载、格式化、备份等),则需要具有足够的权限。一般来说,只有 root 用户或具有 sudo 权限的用户才能进行这些操作。当Linux的/dev/vda1。
116 0
|
6月前
|
SQL 关系型数据库 MySQL
【MySQL异常解决】MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案
【MySQL异常解决】MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案
207 0
|
25天前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
14 1
|
5月前
|
SQL 数据可视化 关系型数据库
快速导入mysql较大的SQL文件
快速导入mysql较大的SQL文件
108 0
|
3月前
|
关系型数据库 MySQL 数据库
csv文件导入mysql指定表中
csv文件导入mysql指定表中
|
4月前
|
存储 SQL 缓存
[MySQL] 二进制文件
[MySQL] 二进制文件
|
4月前
|
关系型数据库 MySQL 数据库
(简单成功版本)Mysql配置my.ini文件
(简单成功版本)Mysql配置my.ini文件
67 0
(简单成功版本)Mysql配置my.ini文件
|
4月前
|
SQL 关系型数据库 MySQL
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
98 0
|
4月前
|
关系型数据库 MySQL Linux
【有关mysql定时备份脚本文件】
【有关mysql定时备份脚本文件】
32 0