从新安装完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