MySQL 5.6.26 透過frm & ibd 恢復資料過程

haoge0205發表於2016-07-13
在A伺服器上建立資料庫yoon
root(yoon)> show create table yoon\G
*************************** 1. row ***************************
       Table: yoon
Create Table: CREATE TABLE `yoon` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8




插入資料
root(yoon)> insert into yoon values (1,'HANK');
Query OK, 1 row affected (1.01 sec)


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


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


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


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




在B伺服器上,新增引數innodb_force_recovery=1並重啟,建立空資料庫yoon,並建立表yoon
mysql> create database yoon;
use yooQuery OK, 1 row affected (1.01 sec)


mysql> use yoon;
Database changed
mysql> CREATE TABLE `yoon` (
    ->   `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 yoon discard tablespace;
Query OK, 0 rows affected (0.02 sec)


將A伺服器上的ibd資料檔案傳輸至B伺服器上
scp yoon.ibd 182.19.4.7:/export/data/mysql/data/yoon


修改許可權
chown -R mysql.mysql yoon.ibd


將表結構和空間建立關係
mysql> alter table yoon import tablespace;
Query OK, 0 rows affected, 1 warning (0.04 sec)


查詢資料
mysql> select * from yoon;
+------+------+
| id   | name |
+------+------+
|    1 | HANK |
|    2 | YOON |
|    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;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2121980/,如需轉載,請註明出處,否則將追究法律責任。

相關文章