在 A 站羣服務器上建立資料庫 linuxidc
root(yoon)> show create table linuxidcG
*************************** 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;