mysql清理 frm_通过.frm .ibd文件恢复MySQL数据
重新安裝完mysql,當(dāng)我初始化MySQL的時(shí)候,報(bào)錯(cuò)提示以前的數(shù)據(jù)目錄還存在著,于是把之前的數(shù)據(jù)拷貝到其他目錄,然后初始化成功。由于以前的數(shù)據(jù)還存在,我便想將以前的數(shù)據(jù)遷移的剛安裝的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時(shí)是默認(rèn)使用獨(dú)立表空間來進(jìn)行數(shù)據(jù)存儲(chǔ)。
1.通過.frm文件恢復(fù)表結(jié)構(gòu)
1.1 使用mysql utilities 工具恢復(fù)表結(jié)構(gòu)
關(guān)于mysql utilities 的安裝,嫌麻煩可以采用mysql的yum源,直接yum install mysql-utilities.noarch
用拷貝出來的.frm直接導(dǎo)出了原來的表創(chuàng)建的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文件恢復(fù)表數(shù)據(jù)
2.1?根據(jù)mysqlfrm導(dǎo)出的sql語句,創(chuàng)建teacher表,刪除.idb文件
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)
2.2 將拷貝出來的.ibd文件代替現(xiàn)teacher表的ibd文件,再導(dǎo)入ibd文件
[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.01sec)
mysql> select *from teacher;+-----+--------+------+---------------------+-----------+-----------------+
| tno | tname | tsex | tbirthday | prof | depart |
+-----+--------+------+---------------------+-----------+-----------------+
| 804 | 李誠 | 男 | 1958-12-02 00:00:00 | 副教授 | 計(jì)算機(jī)系 |
| 856 | 張旭 | 男 | 1969-03-12 00:00:00 | 講師 | 電子工程系 |
| 825 | 王萍 | 女 | 1972-05-05 00:00:00 | 助教 | 計(jì)算機(jī)系 |
| 831 | 劉冰 | 女 | 1977-08-14 00:00:00 | 助教 | 電子工程系 |
+-----+--------+------+---------------------+-----------+-----------------+
4 rows in set (0.00 sec)
數(shù)據(jù)恢復(fù)成功。
總結(jié)
以上是生活随笔為你收集整理的mysql清理 frm_通过.frm .ibd文件恢复MySQL数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中公用类_提示公用类型
- 下一篇: jet mysql连接字符串,关于jet