唉,一次不够细心导致朋友的一个网站MySQL数据全没了。所谓吃一堑长一智,所以想想还是写篇文章提醒一下周边的小伙伴们。本着治病救人,药到根除的一贯方针,多多决定从mysql常识开始讲。
数据库文件介绍
MySQL的每个数据库都对应着一个与数据库同名的文件夹。另外,完整的数据库文件由以下两个部分组成:
第一部分:MySQL所建数据库文件
后缀为.frm的文件:存储数据表的框架结构,文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。
第二部分:MySQL所用存储引擎创建的数据库文件,存储引擎会创建各自不同的数据库文件。根据MySQL所使用的存储引擎的不同(常用的存储引擎是MyISAM和InnoDB)
1、MyISAM数据库表文件包括(MYD文件:即MY Data,表数据文件; .MYI文件:即MY Index,索引文件; .log文件:日志文件)
2、InnoDB数据库文件包括(ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用; .ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引; 日志文件: ib_logfile1、ib_logfile2)
MySQL数据库存放位置
1、MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI,默认存放位置是/var/lib/mysql/data/你的数据库名(我用的ubuntu),注意:MyISAM是默认的引擎。
2、MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,.frm文件默认存放位置是/var/lib/mysql/data/你的数据库名,ibdata1、.ibd文件默认存放位置是/var/lib/mysql/data。
PS: 看到没有,MyISAM只要备份一个与数据库同名的目录就行了,而InnoDB还要额外备份ibdata1、ibd文件。(这也正是我的悲剧点,呜呜呜~~~~)。
备份血泪史
因为默认的引擎就是MyISAM,当朋友让我备份时,我想都没想就是直接备份了MySQL里data目录下与数据库名相同的目录,后来恢复时才发现原来朋友用的是InnoDB引擎,悲剧就这么产生了,唉!
经验教训
备份数据时,千万一定要提前查看备份数据库是什么引擎,然后确定需要备份的数据库文件,不知道数据库存储位置的朋友,可以在MySQL目录里的my.cnf配置文件中找到。偷偷再告诉你一个简单的大招吧,直接把MySQL目录整个备份,不用你写数据库备份脚本?也不用手动备份,交给多备份就好!一键备份多个云盘数据永不丢失,需要时再一键恢复。省事省力又省心!