一、MySQL数据库文件介绍
MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。
1、MySQL创建并管理的数据库文件:
.frm文件:存储数据表的框架结构,文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。
除了必有的.frm文件,根据MySQL所使用的存储引擎的不同(MySQL常用的两个存储引擎是MyISAM和InnoDB),存储引擎会创建各自不同的数据库文件。
2、MyISAM数据库表文件:
.MYD文件:即MY Data,表数据文件
.MYI文件:即MY Index,索引文件
.log文件:日志文件
3、InnoDB采用表空间(tablespace)来管理数据,存储表数据和索引,
InnoDB数据库文件(即InnoDB文件集,ib-file set):
ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用
.ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引
日志文件: ib_logfile1、ib_logfile2
二、MySQL数据库存放位置:
1、MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI,默认存放位置是C:\Documentsand Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data
2、MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,
.frm文件默认存放位置是C:\Documents and Settings\All Users\ApplicationData\MySQL\MySQL Server 5.1\data,ibdata1、.ibd文件默认存放位置是MySQL安装目录下的data文件夹
三、迁移MySQL数据库
MySQL迁移通常使用的有三种方法
1、数据库直接导出,拷贝文件到新服务器,在新服务器上导入。
2、使用第三方迁移工具。
3、数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。
第一种方案的优点:会重建数据文件,减少数据文件的占用空间,兼容性最好,导出导入很少发生问题,需求灵活。缺点:使用传统导出导入时间占用长。
第二种方案的优点:设置完成后传输无人值守,自动完成。缺点:不够灵活,设置繁琐,传输时间长,异常后很难从异常的位置继续传输。
第三种方案的优点:时间占用短,文件可断点传输,操作步骤少。缺点:新旧服务器中MySQL版本及配置必须相同,可能引起未知问题。
假如数据库迁移是因为业务瓶颈或项目改造等需要变动数据表结构的(比如分区分表),我们便只能使用第一种方法了。
下面主要阐述第三种方法
myisam和innoDB迁移步骤不同,因为mysql的工作机制,在show databases和show tables时,mysql其实是去目录下扫描,但执行select这些操作的时候,mysql优化器会去information_schema.TABLES 这个表里面获取信息。
1、myisam
①把机器b的MySQL停掉。
②把机器a上要迁移的库的整个目录复制到机器b的mysql data目录下。
③修改目录权限为700,修改文件权限为660,并修改他们的所属用户和所属组为mysql。
④再启动机器b的mysql。
操作完成后,我进入机器b的mysql,此时,执行show databases可以看到要迁移的数据库。然后执行use databasename,再执行show tables,也可以看到所有的表。
2、innoDB
因为如果直接拷贝数据库目录,ibd文件是没有数据的,所以就会提示表不存在。知道这一点后,迁移如下步骤:
①在机器b上,创建需要的database。
②在该database建好所有的表。
③把机器b的mysql停掉。
④到机器b上,刚才建的那个数据库的目录下,把所有的(.ibd)文件删除掉。
⑤把机器a上,对应数据库目录下所有的(.ibd)文件复制到机器b上,修改文件的权限。
⑥启动机器b的mysql。
这时候再连接上b的mysql,就可以看到所有的数据了。
参考链接:
1、MySQL数据文件介绍及存放位置
https://blog.csdn.net/yaotinging/article/details/6671506
2、mysql大数据迁移,备份
https://blog.csdn.net/followwwind/article/details/79900053
3、mysql大数据迁移,简单步骤
https://blog.csdn.net/weixin_33858336/article/details/88223043