MySQL系列

您所在的位置:网站首页 数据库ocidll文件的作用 MySQL系列

MySQL系列

2024-06-14 22:58| 来源: 网络整理| 查看: 265

很多人都使用过mysql,随着版本的不断迭代,也伴随着新特性的不断完善在data目录下产生了一些列新的文件,跟很多人讨论过这些文件的作用,大家也都没有太注意,这里作此讨论。

数据目录文件解释

-rw-r-----. 1 mysql mysql 56 11月 16 16:56 auto.cnf -rw-r-----. 1 mysql mysql 0 11月 16 17:00 binlog.index -rw-------. 1 mysql mysql 1680 11月 16 16:56 ca-key.pem -rw-r--r--. 1 mysql mysql 1112 11月 16 16:56 ca.pem -rw-r--r--. 1 mysql mysql 1112 11月 16 16:56 client-cert.pem -rw-------. 1 mysql mysql 1680 11月 16 16:56 client-key.pem -rw-r-----. 1 mysql mysql 393216 11月 16 17:25 #ib_16384_0.dblwr -rw-r-----. 1 mysql mysql 8781824 11月 16 17:05 #ib_16384_1.dblwr -rw-r-----. 1 mysql mysql 8849 11月 16 16:56 ib_buffer_pool -rw-r-----. 1 mysql mysql 536870912 11月 16 17:25 ibdata1 -rw-r-----. 1 mysql mysql 268435456 11月 16 17:25 ib_logfile0 -rw-r-----. 1 mysql mysql 268435456 11月 16 17:05 ib_logfile1 -rw-r-----. 1 mysql mysql 12582912 11月 16 17:05 ibtmp1 -rw-r-----. 1 mysql mysql 2644 11月 16 17:04 MySQL8-SmallA.localdomain.err -rw-r-----. 1 mysql mysql 25165824 11月 16 17:25 mysql.ibd -rw-------. 1 mysql mysql 1680 11月 16 16:56 private_key.pem -rw-r--r--. 1 mysql mysql 452 11月 16 16:56 public_key.pem -rw-r--r--. 1 mysql mysql 1112 11月 16 16:56 server-cert.pem -rw-------. 1 mysql mysql 1680 11月 16 16:56 server-key.pem drwxr-x---. 2 mysql mysql 4096 11月 16 17:05 #innodb_temp drwxr-x---. 2 mysql mysql 4096 11月 16 16:56 mysql drwxr-x---. 2 mysql mysql 4096 11月 16 16:56 performance_schema drwxr-x---. 2 mysql mysql 4096 11月 16 16:56 sys -rw-r-----. 1 mysql mysql 10485760 11月 16 17:07 undo_001 -rw-r-----. 1 mysql mysql 10485760 11月 16 17:25 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表空间



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3