在《最基础的MySQL物理备份形式 - 冷备份》我们详细介绍了冷备份的方法,下面我们将学习MyISAM 和 InnoDB存储引擎会备份什么物理文件。
一、 MyISAM 存储引擎
1. 文件位置:所有MyISAM表的数据都存放在MySQL配置文件中 datadir 参数所指定的目录下。每个数据库对应一个文件夹。
datadir是一个路径,我们可以再my.ini文件里找到。像这样:
复制路径,我们就可以看到这些文件:(我的MySQL默认是Innodb储存引擎,后面就只文字介绍了)
然后一个数据库里存储的表都会有3个文件:
文件扩展名 | 文件用途 | 存储内容 | 是否MyISAM特有 |
---|---|---|---|
.frm | 存储表结构元数据 | 表定义、列信息、数据类型、约束等 | 否(所有存储引擎共有) |
.MYD | 存储表数据 | 实际的表记录数据 | 是(MyISAM特有) |
.MYI | 存储索引数据 | 表的索引信息,用于快速查询 | 是(MyISAM特有) |
注意MyISAM 具有非事务性:MyISAM不支持事务,因此它没有自己的事务日志(如redo log)。
二、 Innodb存储引擎
InnoDB的存储和备份要复杂得多,因为它是一个事务性存储引擎。它的数据可能存储在多个地方,具体取决于配置,一些基础参数配置和解释如下:
参数名称 | 默认值 | 功能描述 | 重要性说明 |
---|---|---|---|
innodb_file_per_table | ON (1) | 表空间模式开关 • ON :独享表空间。每个表的数据和索引存储在自己的 .ibd 文件中。• OFF :共享表空间。所有表的数据和索引存储在共享的 ibdata 文件中。 | 最重要的参数,直接影响数据库的维护、备份和性能。现代版本默认开启,强烈建议保持 ON 。 |
innodb_data_file_path innodb_data_home_dir | ibdata1:12M:autoextend (通常位于 datadir ) | 共享表空间定义 这两个参数共同定义了共享表空间文件( ibdata1 , ibdata2 ...)的路径、名称和大小。 | 即使开启独享表空间,共享表空间文件依然必须存在,用于存储元数据、撤销日志、双写缓冲等系统级数据。 |
innodb_log_group_home_dir | datadir | 重做日志目录 定义了InnoDB重做日志文件 ( ib_logfile0 , ib_logfile1 ) 的存放目录。 | 至关重要。重做日志记录了所有数据更改操作,用于保证事务的持久性(Durability) 和数据库崩溃恢复,绝不能丢失或随意删除。 |
根据InnoD引擎的性质,在进行InnoDB物理备份时,无论采用共享还是独享表空间模式,都必须备份三部分核心文件:首先是共享表空间文件(由innodb_data_home_dir和innodb_data_file_path参数定义),其中存储着事务undo信息、元数据等关键系统数据;其次是重做日志文件(位于innodb_log_group_home_dir指定路径),用于保证事务持久性和崩溃恢复;最后是数据库目录下的.frm表结构文件。当使用独享表空间时,还需额外备份对应的.ibd数据文件,但需注意.ibd文件仅存储表数据,而事务系统数据仍依赖于共享表空间文件,这是确保备份完整可用的关键。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程