1.MyISAM
数据引擎问MyISAM可以直接通过文件进行还原
1.1:创建新的数据库
1.2:停止mysql服务器(service mysql stop)
1.3:将.frm,.MYD,.MYI文件拷到数据库存储地址,该数据库下面
1.4:将文件的用户和用户组修改为mysql (chown -R mysql:mysql /mysql/data/test /mysql/data/test 为数据库存储地址)
1.5:修改文件的权限,让文件拥有读和写入的权限
1.6:重启mysql服务器(service mysql start)
2.InnoDB
Innodb 文件分为.ibd和.frm文件
.ibd文件主要是用于存储数据和索引
.frm文件主要是用于存储元数据(包括表结构)
1.1:创建新的数据库
1.2:建立相同的表(表字段不用一样)
1.3:停止mysql服务器(service mysql stop)
1.4:导入.frm文件,修改文件用户和用户组,以及文件权限
1.4:找回表结构,需要用.frm文件找回表结构,修改/添加my.ini配置文件中的innodb_force_recovery = 6(进入到恢复模式),启动mysql服务
1.5:修改my.ini中 innodb_force_recovery = 1
注意:1.2,1.3,1.4,1.,5主要是为了找回表结构,如果有表结构 可以直接导入表结构无需操作1.2,1.3,1.4,1.5
1.6:表结构恢复后,需要删除表空间
单一表空间删除:ALTER TABLE <table_name> DISCARD TABLESPACE;
批量删除表空间:select CONCAT('ALTER TABLE ',table_name,' DISCARD TABLESPACE;') from information_schema.TABLES where TABLE_SCHEMA = 'smt' and ENGINE = "InnoDB",复制查询结果,在执行查询结果
1.7:将.ibd文件复制到数据库表中的储存位置,修改文件的用户和用户组为mysql(chown -R mysql:mysql /mysql/data/test)
1.8:导入表空间
单一导入:ALTER TABLE <table_name> IMPORT TABLESPACE;
批量导入:select CONCAT('ALTER TABLE ',table_name,' IMPORT TABLESPACE;') from information_schema.TABLES where TABLE_SCHEMA = 'smt' and ENGINE = "InnoDB",复制查询结果,在执行查询结果
总结:该种数据库恢复的方式最好采用同一个板的数据库