mariadb数据库文件的组成

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

一、日志文件

1、错误日志:(error log)

错误日志记录msyql运行过程中所有较为严重的警告和错误信息,以及mariadb server 每一次启动和关闭的详细信息,事件调度运行一个事件时产生的信息,在复制架构中的从服务器上启动从服务器线程时产生的信息 ,在默认情况下,系统错误日志的功能是开启的,错误日志的默认存放位置为数据目录下,以hostname.err命名,但也可以使用log-error[=file_name],修改其放目录和文件名。

服务器相关的变量

log_error = /path/to/error_log_file

错误日志的存放位置

查看错误日志存位置

1
MariaDB [(none)]> show  global  variables  like  '%log_error%' \G

wKiom1NIURDjQstzAAD_XLhj7gc418.jpg

log_warnings={1|0}

是否记录警告信息于错误日志中,1表示记录,0表示不记录。

1
MariaDB [(none)]> show  global  variables  like  '%log_warnings%' \G

wKioL1NIUafDsjndAADYVbQMdEk804.jpg

2、查询日志:query log

查询日志记录mariadb中所有的query,通过--log[=file_name]来打开该功能。由于记录了所有的query,包括所有的select,体积比较大,开启后对性能也有较大的影响,一般只用于跟踪某些特殊的sql性能问题才会短暂打开该功能,默认的查询日志文件名为hostname.log.

服务器相关的变量

log_output={table|file|none}

记录于那里,table与file是可以同时出现,使用分号隔开

wKiom1NIVISjQUfPAADKkW3kPXc731.jpg

general_log

是否启用查询日志,on表示开启,off表示关闭

general_log_file

定义一般查询日志保存的文件

wKioL1NIVJaAkVx6AAETR7FWrBY433.jpg

3、慢查询日志:slow query log

顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-querues[=file_name]打开该功能并设置记录位置和文件名,默认文件名为hostname-slow.log,默认目录也是数据目录;其中记录了语句执行的时刻,执行所消耗的时间,执行用户,连接主机等相关信息。

服务器相关的变量

long_query_time

多长时间算慢查(默认时间为秒)

1
2
#查看默认的慢查时限
MariaDB [(none)]> show  global  variables  like  'long_query_time%' ;

wKiom1NIVhCTtS7aAADijqPoLIw489.jpg

slow_query_log:{on|off}

设定是否启用慢查日志;它的输出位置也取决于log_output={table|file|none};

slow_query_log_file

定义日志文件路径及名称

1
MariaDB [(none)]> show  global  variables  like  '%slow_query%' ;

wKioL1NIVjOCibYJAAEvPdXqJ0o586.jpg

log_slow_rate_limit

速率

log_slow_verbosity

详细信息

log_slow_filter

那些日志过滤不记录慢查日志

1
2
MariaDB [(none)]> show  global  variables  like  'log_slow%'
\G

wKiom1NIVyjSYzmeAAJX6v74GTg300.jpg

4、binlog 日志

二进制日志,也就我们常说的binlog,也是mariadb server是最为重要的日志之一。当我们通过“log-bin[=file_name]”打开记录的功能之后,mariadb会将所有修改数据库数据的query以二进制形式记录到日志文件中,当然,日志中并不仅限于query语句这么简单,还包括每一条query所执行的时间,所消耗的资源,以及相关的事务信息;和错误日志一样,binlog记录功能同样需要“log-bin[=file name]”参数的显示指定开户,如果未指定file_name,则会在数据目录下记录为myslq-bin.********(*代表0~9之间的数字,表示该日志的序号。)
查看日志状态
1
MariaDB [(none)]>show variables  like  '%log_bin%' ;

wKioL1NIPVPh-wCWAAFJhkvoCnI528.jpg

注:所有的布尔值(ON|OFF)都可以使用1或0来表示

查看日志生成列表
1
MariaDB [(none)]>show  binary  logs;

wKiom1NIPliSviBJAADn3L5m_tY296.jpg

Log_name:表示日志生成列名的名字

File_size:表示其每一个日志文件的大小

最后一条记录表示当前正在使用的binlog日志文件

或使用

1
# cat mariadb-bin.index

wKioL1NIPsDjIsTJAACLtdQ-Y6g972.jpg

查看正在使用的日志

1
MariaDB [(none)]>show master status;

wKioL1NIQW_Q7jWmAADNylNUUz8962.jpg

File: mariadb-bin.000003:当前记录的日志文件

Position: 312 :日志文件记录到那一个节点(位置)

Binlog_Do_DB: 为那些库记录日志(默认为所有数据库)

Binlog_Ignore_DB: 不为那些库记录日志

查看日志文件内容

#mariadbbinlog ./文件目录(select 语句是不会记录于二进制文件)

--start-time

--start-position

--stop-time

--stop-position

1
# mariadbbinlog --start-datetime="2014-04-11 0:01:59" --stop-datetime="2014-04-11 1:22:12" mariadb-bin.000002

或在数据库中使用

1
MariaDB [(none)]>SHOW BINLOG EVENTS  IN   'mariadb-bin.000002'  from  4 limit  1,2\G

wKioL1NIRSPAG5pgAAHxMP5at6g654.jpg

Log_name:此条log存在那个文件中。

Pos:log在bin-log中的开始位置

Event_type:log的类型信息

Server_id:可以查看配置中的server_id,表示log是那个服务器产生

End_log_pos:log在bin-log中的结束位置

Info:log的一些备注信息,可以直观的看出进行了什么操作(GTID)

删除日志
1
2
MariaDB [(none)]>reset master;
MariaDB [(none)]>purge  binary  to  'mariadb-bin-1.0000000001'
或自动删除5天之前的数据
1
2
MariaDB [(none)]> show  global  variables  like  '%expire%' ;
MariaDB [(none)]> set  global  expire_logs_days=5;

binlog的格式

1
2
3
4
5
6
7
8
9
#查看默认的日志格式
MariaDB [(none)]>show variables  like  '%format%' ;
#可以有三种格式(binlog_format):STATEMENT,ROW,MIXED
MariaDB [(none)]> SET  SESSION binlog_farmat= 'statement'
#设置当前会话级别的基于语句(statement)
MariaDB [(none)]> set  SESSION format= 'ROW'
#设置当前会话级别的基于行(不确定的函数)(row )
MariaDB [(none)]> SET  SESSION bin_format= 'mixed'
#设置当前会话级别的混合模式(前两者结合)(MIXED)

服务器相关的日志变

max_binlog_size

binlog的最大存储上限;当日志达到该上限时,mariadb会重新创建一个日志开始继续记录。不过偶尔也有超出该设置的binlog产生,一般都是因为在即将达到上限时,产生了一个较大的事务,为了保证事务安全,mariadb不会将同一个事务分开记录到两个binlog中。

sync_binlog=0

表示不靠时间同步,仅在事务在提交时同步,依赖于autocommit

log_bin:{on|off}

还可以是指定文件路径,重启后生效

sql_log_bin:{on|off}

会话级别关闭二进制文件
1
MariaDB [(none)]>setsession sql_log_bin=0;

如果设置了OFF则表示关闭记录日志功能。(仅当前会话有效)

max_binlog_cache_size:

二进制日志缓冲空间大小。仅用于缓冲事件务类一语句(单位字节)

滚动日志

  • 大小
  • 指定时间
  • 重启或flush logs后会自动回滚
binary log index
索引日志记录点或数据库中使用show binary logs;

binary日志文件内容的格式

  • 事件发生的日期和时间

  • 服务器ID

  • 事件的结束位置

  • 事件的类型

  • 原服务器生成的此事件时的线程

  • 语句时间戳和写入二进制文件的时间差

  • 错误代码

  • 事件内容

  • 事件位置,相当于下个事件的开始位置

5、Innodb的在线redo日志:innodb redo log

Innodb是一个事务安全的存储引擎,其事务安全性主要就是通过在线redo日志和记录在表空间中的undo信息来保证的,redo日志记录了Innodb所做的所有物理变更和事务信息,通过redo日志和undo信息,Innodb保证了在任何情况下的事务安全性。Innodb的redo日志同样默认存放在数据目录下

更改设置日志的存放位置

innodb_log_group_home_dir

1
2
#查看默认日志存放位置
MariaDB [(none)]> show variables  like  '%innodb_log_group_home_dir%' ;

wKiom1NITHLjbtl7AADtUbnqoso391.jpg

设置日志的数量

innodb_log_files_in_group

1
2
#查看innodb_log_file默认分组
MariaDB [(none)]> show variables  like  '%innodb_log_files_in_group%' ;

wKiom1NITAyzbOdEAADoNfdEILs188.jpg

6、事务日志
保证事务一致性的,但事务日志和二进制日志都可以将某个操作重新来一遍的日志

二、数据文件

1、数据文件

在mariadb中每一个数据库都会在定义好的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件。不同的mariadb存储引擎有各自不同的数据文件,存放位置也有区别,多数存储引擎的数据文件都存放在和myISAM数据文件位置相同的目录下,但是每个数据文件的扩展名却各不一样。如myISAM用.MYD作为扩展名,Innodb用.ibd,Archive用.arc,CSV用.csv等。
⑴、.frm文件
与表相关的元数据(meta)信息都存放在.frm文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的.frm文件。所有的.frm文件都存放在所属数据的文件夹下面。
⑵、.MYD文件
.MYD文件是myISAM存储引擎专用,存放myISAM表的数据,每一个myISAM表都会有一个.MYD文件与之相对应,同样存放于所属数据库的文件夹下,和.frm文件在一起。
⑶、.MYI文件
该文也是专属于myISAM存储引擎的,主要存放myISAM表的索引相关信息。对于myISAM存储来说,可以被cache的内容主要就是来源于.MYI文件中,每一个myISAM表对应一个.MYI文件,存放于位置和.frm以及.MYD一样。
⑷、.ibd文件和ibdata文件

这两种文件都是存放在Innodb数据的文件,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据,独享表空间存储方式使用 .ibd文件来存放数据,且每个表一个.ibd文件,文件存放在和myISAM数据相同的位置,如果选用共享存储表空间来存储数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行分配)ibdata文件,ibdata文件可以通过innodb_data_home_dir和innodb_data_file_path 两个参数共同配置组成,innodb_data_host_dir配置数据存放的放的总目录,而innodb_data_file_path配置每一个文件的名称,当然,也可以不配置innod-data_home_dir而直接在innodb_data_file_path参数配置的时使用绝对路径来完成配置。innodb_data_file_path 中可以一次配置多个 ibdata 文件。文件可以是指定大小,也可以是自动扩展的,但是 Innodb 限制了仅仅只有最后一个 ibdata 文件能够配置成自动扩展类型。当我们需要添加新的 ibdata 文件的时候,只能添加在 innodb_data_file_path配置的最后,而且必须重启 mariadb 才能完成 ibdata 的添加工作。不过如果我们使用独享表空间存储方式的话,就不会有这样的问题,但是如果要使用裸设备的话,每个表一个裸设备,可能造成裸设备数量非常大,而且不太容易控制大小,实现比较困难,而共享表空间却不会有这个问题,容易控制裸设备数量。

表空间:由Innodb管理的特有格式数据文件,内部可同时存储数据和索引,每个表数据库目录下存储两个文件

tb_name.frm:与表相关的元数据(meta)信息都存放在.frm文件中,包括表结构的定义信息等

tb_name.ibd:独享表空间存储方式使用 .ibd文件来存放数据,且每个表一个.ibd文件

设置独立表空间

innodb_file_per_table=ON

1
2
#查看默认表空间类型
MariaDB [(none)]> show variables  like '%innodb_file_per_table%' ;

wKioL1NITYujJLbAAADXebwyZzc731.jpg

设置共享表空间

innodb_file_per_table=OFF

每张表都会有一个独有格式定义文件:tb_name.frm,还有一个默认位于数据目录下共享的表空间文件:ibddata#(#代表数字)

2、Replication 相关文件

⑴、master.info文件                                                                       master.info文件存在于Slave端的数据目录下,里面存放了该Slave的Master端的相关信息,包括Master的主机地址,连接用户,连接密码,连接端口,当前日志位置,己经读取到的日志位置等信息。
⑵、relay log 和 relay log index

relay_log文件用于存放Slave端I/O线程从Master端所读到的binary log信息,然后由Slave端SQL线程从该realy log中读取并解析相应的日志信息,转化成Master所执行的sql语句,然后在Slave端应用。

relay_log_index

文件的功能类似于mysql-bin.index同样是记录存放位置的绝对路径,只不过他所记录的不是Binary log,而是relay_log.

⑶、relay_log_info_file
类似于master.info,它存放通过Slave的I/O线程写入到本地的relay_log的相关信息。供Slave端的sql线程以及某些管理操作随时能够获取当前复制的相关信息。
⑷、relay_log_purge={on|off}
是否清理不再需要中继日志
三、其他文件
1、system config file
mariadb的系统配置文件一般都是“my.cnf”,unix/linux下默认存放在/etc目录下,“my.cnf”文件中包含多种参数选项组(group),每一种参数组都是通过中括号给定了固定的组名,如[mysqld]组中包括了mysqld服务启动时候的初始化参数,[client]组中包括着客户端工具程序可以读取参数,此外还有其他针对各个客户端软件的特定参数组,如mysql程序使用的[mysqld],mysqlcheck使用的[mysqlcheck]。
2、pid file
pid file是mysql应用程序在unix/linux环境下的一个进程文件,和许多的其他的unix/linux服务端程序一样,存放着自己进程的id.
3、socket file
socket文件也是在unix/linux环境下才有用的,用户在unix/linux环境下客户端连接可以不通过TCP/IP网络而直接使用unix Socket来连接mysql.

=================完=========================










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1394517,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
274 0
|
3月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
59 1
|
3天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
SQL 关系型数据库 MySQL
|
1月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
34 2
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
1月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
200 1
|
1月前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
209 10
|
1月前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
|
1月前
|
存储 关系型数据库 MySQL
Maria DB Workbench支持哪些数据库引擎
【10月更文挑战第17天】Maria DB Workbench支持哪些数据库引擎
19 0

推荐镜像

更多
下一篇
无影云桌面