共计 1719 个字符,预计需要花费 5 分钟才能阅读完成。
在 A 服务器上创建数据库 linuxidc
root(yoon)> show create table linuxidc\G
*************************** 1. row ***************************
Table: linuxidc
Create Table: CREATE TABLE `linuxidc` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入数据
root(linuxidc)> insert into linuxidc values (1,’HANK’);
Query OK, 1 row affected (1.01 sec)
root(linuxidc)> insert into linuxidc values (2,’linuxidc’);
Query OK, 1 row affected (0.04 sec)
root(linuxidc)> insert into linuxidc values (3,’GARY’);
Query OK, 1 row affected (0.00 sec)
root(linuxidc)> insert into linuxidc values (4,’NIKO’);
Query OK, 1 row affected (0.02 sec)
root(linuxidc)> select * from linuxidc;
+——+——+
| id | name |
+——+——+
| 1 | HANK |
| 2 | linuxidc |
| 3 | GARY |
| 4 | NIKO |
+——+——+
4 rows in set (0.00 sec)
在 B 服务器上,添加参数 innodb_force_recovery= 1 并重启,创建空数据库 linuxidc,并创建表 yoon
MySQL> create database linuxidc;
use yooQuery OK, 1 row affected (1.01 sec)
mysql> use linuxidc;
Database changed
mysql> CREATE TABLE `linuxidc` (
-> `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 linuxidc discard tablespace;
Query OK, 0 rows affected (0.02 sec)
将 A 服务器上的 ibd 数据文件传输至 B 服务器上
scp linuxidc.ibd 182.19.4.7:/export/data/mysql/data/linuxidc
修改权限
chown -R mysql.mysql linuxidc.ibd
将表结构和空间建立关系
mysql> alter table linuxidc import tablespace;
Query OK, 0 rows affected, 1 warning (0.04 sec)
查询数据
mysql> select * from linuxidc;
+——+——+
| id | name |
+——+——+
| 1 | HANK |
| 2 | linuxidc |
| 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;
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-07/133149.htm