經過.frm .ibd文件恢復MySQL數據

從新安裝完mysql,當我初始化MySQL的時候,報錯提示之前的數據目錄還存在着,因而把以前的數據拷貝到其餘目錄,而後初始化成功。因爲之前的數據還存在,我便想將之前的數據遷移的剛安裝的MySQL中。mysql

MySQL的版本:Server version: 5.7.24 MySQL Community Server (GPL) 注:Permitted Values (>= 5.6.6) innodb_file_per_table=ON DEFAULT mysql版本大於等於5.6時是默認使用獨立表空間來進行數據存儲。sql

1.經過.frm文件恢復表結構docker

1.1 使用mysql utilities 工具恢復表結構工具

關於mysql utilities 的安裝,嫌麻煩能夠採用mysql的yum源,直接yum install mysql-utilities.noarchspa

用拷貝出來的.frm直接導出了原來的表建立的sql語句
[root@docker1 ~]# mysqlfrm --server=root:123456@localhost:3306 /backup/mysql-backup/db1/teacher.frm --port=3434 --user=mysql --diagnostic ........ CREATE TABLE `db1`.`teacher` ( `TNO` varchar(3) COLLATE `utf8_general_ci` NOT NULL, `TNAME` varchar(4) COLLATE `utf8_general_ci` NOT NULL, `TSEX` varchar(2) COLLATE `utf8_general_ci` NOT NULL, `TBIRTHDAY` datetime NOT NULL, `PROF` varchar(6) COLLATE `utf8_general_ci` DEFAULT NULL, `DEPART` varchar(10) COLLATE `utf8_general_ci` NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; #...done.

 

2.經過.ibd文件恢復表數據code

2.1 根據mysqlfrm導出的sql語句,建立teacher表,刪除.idb文件server

mysql -uroot -p mysql> create database db1;

mysql> CREATE TABLE `db1`.`teacher` (
 `TNO` varchar(3) COLLATE `utf8_general_ci` NOT NULL, `TNAME` varchar(4) COLLATE `utf8_general_ci` NOT NULL, `TSEX` varchar(2) COLLATE `utf8_general_ci` NOT NULL, `TBIRTHDAY` datetime NOT NULL, `PROF` varchar(6) COLLATE `utf8_general_ci` DEFAULT NULL, `DEPART` varchar(10) COLLATE `utf8_general_ci` NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  mysql> alter table teacher discard tablespace;
  Query OK, 0 rows affected (0.01 sec)blog

2.2 將拷貝出來的.ibd文件代替現teacher表的ibd文件,再導入ibd文件ci

[root@docker1 ~]# service mysqld stop Stopping mysqld: [ OK ] [root@docker1 ~]# cp /backup/mysql-backup/db1/teacher.ibd /var/lib/mysql/db1/teacher.ibd [root@docker1 ~]# chown mysql:mysql /var/lib/mysql/db1/teacher.ibd [root@docker1 ~]# service mysqld start Starting mysqld: [ OK ] [root@docker1 ~]# mysql -uroot -p db1 Enter password: mysql> alter table teacher import tablespace; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> select * from teacher; +-----+--------+------+---------------------+-----------+-----------------+
| tno | tname  | tsex | tbirthday           | prof      | depart          |
+-----+--------+------+---------------------+-----------+-----------------+
| 804 | 李誠   | 男   | 1958-12-02 00:00:00 | 副教授    | 計算機系        |
| 856 | 張旭   | 男   | 1969-03-12 00:00:00 | 講師      | 電子工程系      |
| 825 | 王萍   | 女   | 1972-05-05 00:00:00 | 助教      | 計算機系        |
| 831 | 劉冰   | 女   | 1977-08-14 00:00:00 | 助教      | 電子工程系      |
+-----+--------+------+---------------------+-----------+-----------------+
4 rows in set (0.00 sec)

數據恢復成功。it

相關文章
相關標籤/搜索