Mysql8.0.30数据data目录文件解释

数据库内存和磁盘架构

在这里插入图片描述

data目录展示

[root@DESKTOP-9ADRUGP data]# pwd
/usr/local/software/mysql/3312/data
[root@DESKTOP-9ADRUGP data]# ls -l
total 96616
-rw-r----- 1 systemd-coredump input       56 Jul 24  2023  auto.cnf
-rw-r----- 1 systemd-coredump input  3025899 Mar 11 12:03  binlog.000001
-rw-r----- 1 systemd-coredump input      157 Mar 11 13:51  binlog.000002
-rw-r----- 1 systemd-coredump input      180 Mar 11 13:53  binlog.000003
-rw-r----- 1 systemd-coredump input      157 Mar 11 13:54  binlog.000004
-rw-r----- 1 systemd-coredump input       64 Mar 11 13:54  binlog.index
-rw------- 1 systemd-coredump input     1680 Mar 11 12:02  ca-key.pem
-rw-r--r-- 1 systemd-coredump input     1112 Mar 11 12:02  ca.pem
-rw-r--r-- 1 systemd-coredump input     1112 Mar 11 12:02  client-cert.pem
-rw------- 1 systemd-coredump input     1676 Mar 11 12:02  client-key.pem
-rw-r----- 1 systemd-coredump input   196608 Mar 11 13:58 '#ib_16384_0.dblwr'
-rw-r----- 1 systemd-coredump input  8585216 Jul 24  2023 '#ib_16384_1.dblwr'
-rw-r----- 1 systemd-coredump input     3773 Mar 11 13:53  ib_buffer_pool
-rw-r----- 1 systemd-coredump input 12582912 Mar 11 13:57  ibdata1
-rw-r----- 1 systemd-coredump input 12582912 Mar 11 13:54  ibtmp1
drwxr-xr-x 2 systemd-coredump root      4096 Mar 11 13:54 '#innodb_redo'
drwxr-x--- 2 systemd-coredump input     4096 Mar 11 13:54 '#innodb_temp'
drwxr-xr-x 2 systemd-coredump root      4096 Mar 11 12:08  luckyframe
drwxr-x--- 2 systemd-coredump input     4096 Mar 11 12:02  mysql
-rw-r----- 1 systemd-coredump input 28311552 Mar 11 13:57  mysql.ibd
lrwxrwxrwx 1 systemd-coredump input       27 Mar 11 13:54  mysql.sock -> /var/run/mysqld/mysqld.sock
drwxr-xr-x 2 systemd-coredump root      4096 Mar 11 12:08  nacos@002dexample
drwxr-x--- 2 systemd-coredump input     4096 Mar 11 12:02  performance_schema
-rw------- 1 systemd-coredump input     1680 Mar 11 12:02  private_key.pem
-rw-r--r-- 1 systemd-coredump input      452 Mar 11 12:02  public_key.pem
drwxr-xr-x 2 systemd-coredump root      4096 Mar 11 12:08  ruoyi@002dvue@002dpro
-rw-r--r-- 1 systemd-coredump input     1112 Mar 11 12:02  server-cert.pem
-rw------- 1 systemd-coredump input     1680 Mar 11 12:02  server-key.pem
drwxr-x--- 2 systemd-coredump input     4096 Mar 11 12:02  sys
drwxr-xr-x 2 systemd-coredump root      4096 Mar 11 12:08  test
-rw-r----- 1 systemd-coredump input 16777216 Mar 11 13:58  undo_001
-rw-r----- 1 systemd-coredump input 16777216 Mar 11 13:58  undo_002

1.auto.cnf

MySQL启动时,会自动从data_dir/auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。这个uuid的作用是在mysql复制时如果发生故障,slave可以通过uuid辨识master的日志。

2.binlog.index

用于记录MySQL产生的binlog日志的具体位置,binlog是MySQL记录所有操作的逻辑日志,主要用于故障恢复和主从同步时使用,由于MySQL数据库是一个多类型存储引擎并存的数据库,binlog就起着一个实例(instance)总体重做信息的角色。

3.*.pem文件

此类文件是在MySQL8.0以后加入的,用于ssl认证登陆

4.ib_buffer_pool

mysql innodb buffer pool 预热,当mysql数据库innodb buffer pool达到一定量级之后再异常宕机重启之后,就会面临一个严峻的问题,就是如何快速预热buffer pool,光靠innodb是不够的,这时就需要将innodb buffer pool存储到存储中,在数据文件中进行备份,在重启时innodb 直接读取此文件,但是要保证innodb版本 page页大小,buffer pool大小前后一致。

innodb_buffer_dump_at_shutdown:默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘。

innodb_buffer_pool_load_at_startup:默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。

innodb_buffer_pool_load_now:默认为关闭OFF。如果开启该参数,停止MySQL服务时,以手动方式将InnoDB缓存池中的热数据保存到本地硬盘。

innodb_buffer_pool_filename:如果开启InnoDB预热功能,停止MySQL服务时,MySQL将InnoDB缓冲池中的热数据保存到数据库根目录中,默认文件名为ib_buffer_pool.

innodb_buffer_pool_load_aborr:默认为关闭OFF。如果开启该参数,即便开启InnoDB预热功能,启动MySQL服务室,MySQL也不会将本地硬盘的热数据加载到InnoDB缓冲池中。

5.#ib_16384_0.dblwr #ib_16384_1.dblwr

Doublewrite buffer是一个存储,InnoDB将页写入InnoDB数据文件适当位置之前,会将缓冲池中页刷新到该存储中。如果操作系统,存储子系统,或者mysqld进程在页写入中途崩溃,InnoDB可以在崩溃恢复中从doublewrite buffer中找到一份好的备份。

虽然数据写了2次,doublewrite buffer不会需要2倍的IO负载和2倍的IO操作。数据将以一个大的连续块写入到doublewrite buffer中,操作系统单次调用fsync()(除非innodb_flush_method被设置为O_DIRECT_NO_FSYNC)。

MySQL8.0.20之前,doublewrite buffer存储在InnoDB 系统表空间中。从MySQL8.0.20开始,doublewrite buffer存储在双写文件中。

doublewrite buffer配置提供以下参数:

innodb_doublewrite:控制是否启用doublewrite buffer。默认启用。设置innodb_doublewrite=0或者启动MySQL服务时加–skip-innodb-doublewrite选项禁用。

如果doublewrite buffer位于支持原子写的Fusion-io设备上,则自动禁用doublewrite buffer,并使用Fusion-io原子写来执行数据文件写。

innodb_doublewrite_dir:8.0.20引入的,定义了InnoDB创建双写文件的目录。如果目录没有指定,双写文件创建在innodb_data_home_dir目录下,没有指定默认在数据目录下。

哈希符’#‘会自动创建在指定目录名前缀,避免与shema名冲突。然而,如果使用了’.‘, ‘#’. 或者’/‘指定了目录前缀,则不在目录名前缀没有哈希符’#'。

innodb_doublewrite_files:参数定义了双写文件的数量。默认情况下,每个缓冲池实例都会创建2个双写文件:一个刷新列表双写文件和一个LRU列表双写文件。

刷新列表双写文件用于从缓冲池刷新列表中刷新页。刷新列表双写文件默认大小是InnoDB page size * doublewrite page bytes.

LRU列表双写文件是用于刷新从缓冲池LRU列表的页。它也包括单个页刷新的槽。LRU列表双写文件默认大小为InnoDB page size * (doublewrite pages + (512 / the number of buffer pool instances)),512是为单个页刷新保留的槽的总数。

至少有2个双写文件。双写文件的最大数量是缓冲池实例的两倍。(缓冲池实例的数量由参数innodb_buffer_pool_instances控制)

双写文件有以下格式:#ib_page_size_file_number.dblwr。例如,下面的双写文件是在一个InnoDB页大小为16KB,单个缓冲池的MySQL实例上创建:

innodb_doublewrite_pages:MySQL8.0.20引入的,控制每个线程双写页的最大数量。如果这个值没有指定,innodb_doublewrite_pages设置为innodb_write_io_threads值。这个参数用于高级性能调优。默认值已经适用于大多数用户。

innodb_doublewrite_batch_size:参数MySQL8.0.20引入的,控制一批写入双写页的数量。这个参数用于高级性能调优。默认值已经适用于大多数用户。

参考:https://dev.mysql.com/doc/refman/8.0/en/innodb-doublewrite-buffer.html

6.ibdata1

innodb默认共享表空间,在不指定下默认所有表共享一个表空间,但是一般生产环境中建议修改默认值,每个表一个表空间

7.ib_logfile*

innodbredo日志,区别于binlog,由于mysql是一个支持多存储引擎共存的数据库,所以innodb redo只记录innodb 存储引擎的重做日志,并且redo是一个物理日志,通过xid记录数据文件位置和binlog中的位置,而binlog记录的是记录mysql全局的变化量,是一个逻辑日志。实际中mysql中由于两阶段commit的存在弱化了innodb redo的管理,也不需要像Oracle中需要备份redo日志,mysql中只需要备份binlog日志即可。

8.ibtmp1

innodb临时表空间

9.undo_001

innodbundo表空间

上面第7个,ib_logfile*,我发现MySQL8.0.30版本里面没看到这个文件,是为啥呢?欢迎评论区指教。

  • 28
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值