MySQL通过frm 和 ibd 恢复数据过程


在A服务器上创建数据库lv
root(lv)> show create table lv\G
*************************** 1. row ***************************
Table: lv
Create Table: CREATE TABLE `lv` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 


插入数据
root(lv)> insert into lv values (1,'HANK');
Query OK, 1 row affected (1.01 sec)


root(lv)> insert into lv values (2,'lv');
Query OK, 1 row affected (0.04 sec)


root(lv)> insert into lv values (3,'GARY');
Query OK, 1 row affected (0.00 sec)


root(lv)> insert into lv values (4,'NIKO');
Query OK, 1 row affected (0.02 sec)


root(lv)> select * from lv;
+------+------+
| id | name |
+------+------+
| 1 | HANK |
| 2 | lv |
| 3 | GARY |
| 4 | NIKO |
+------+------+
4 rows in set (0.00 sec)

 


在B服务器上,添加参数innodb_force_recovery=1并重启,创建空数据库lv,并创建表lv
mysql> create database lv;
use yooQuery OK, 1 row affected (1.01 sec)


mysql> use lv;
Database changed
mysql> CREATE TABLE `lv` (
-> `id` int(11) DEFAULT NULL,
-> `name` varchar(20) DEFAULT NULL
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.09 sec)


将表结构和空间脱离
mysql> alter table lv discard tablespace;
Query OK, 0 rows affected (0.02 sec)


将A服务器上的ibd数据文件传输至B服务器上
scp lv.ibd 182.19.4.7:/export/data/mysql/data/lv


修改权限
chown -R mysql.mysql lv.ibd


将表结构和空间建立关系
mysql> alter table lv import tablespace;
Query OK, 0 rows affected, 1 warning (0.04 sec)


查询数据
mysql> select * from lv;
+------+------+
| id | name |
+------+------+
| 1 | HANK |
| 2 | lv |
| 3 | GARY |
| 4 | NIKO |
+------+------+
4 rows in set (0.00 sec)

 


详细步骤如下:
1、停止mysql服务,添加innodb_force_recovery=1 ,启动mysql服务
2、创建新数据库,创建相同表结构的表(表结构必须相同)
3、执行alter table tb discard tablespace;
4、删除表的ibd文件
5、跨服务器复制表ibd文件
6、修改ibd文件权限,执行alter table tb import tablespace;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM