根据《MySQL技术内幕》一书的介绍,innodb存在表空间的概念,是以共享表空间的格式,将数据都存入到一个文件中。介绍ibdata1,ibdata1是与存储引擎相关的,只在innodb存储引擎下出现,并且是mysql-server中全部innodb存储引擎的表,不分数据库都存储到ibdata1中,固然这个文件中还会存储其余信息,如索引等。当在MySQL中开启innodb_file_per_table后,那么将会在每一个数据库对应的文件夹下,每张表将有存在两个对应文件,一个是.frm,另一个是.ibd文件。这种状况成为私有表空间。可是这个时候共享表空间ibdata1,仍然是存在的。
yum安装的mysql,数据目录是/var/lib/mysql
,能够经过/etc/my.cnf
查看。mysql
直接备份.frm,.myd,.myi文件,而后再复制粘贴到目标数据库文件夹便可。sql
若是是系统表空间的状况,一个笨办法就是创建一个新的mysql环境,将旧环境中的ibdata1文件和须要恢复的aa,bb等数据库文件夹复制到新mysql数据目录。而后重启mysqld守护进程就行。数据库
systemctl restart mysqld
下面是恢复的rbac数据库user表的数据spa
若是是私有表空间的话,虽然没实验过,但我猜测,直接复制.frm文件和.ibd文件到目标数据库便可。.net
利用数据库文件恢复MySQL数据rest