200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql拷贝恢复.frm_通过.frm .ibd文件恢复MySQL数据

mysql拷贝恢复.frm_通过.frm .ibd文件恢复MySQL数据

时间:2023-10-16 02:14:48

相关推荐

mysql拷贝恢复.frm_通过.frm .ibd文件恢复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时是默认使用独立表空间来进行数据存储。

1.通过.frm文件恢复表结构

1.1 使用mysql utilities 工具恢复表结构

关于mysql utilities 的安装,嫌麻烦可以采用mysql的yum源,直接yum install mysql-utilities.noarch

用拷贝出来的.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文件恢复表数据

2.1根据mysqlfrm导出的sql语句,创建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文件代替现teacher表的ibd文件,再导入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 | 副教授 | 计算机系 |

| 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)

数据恢复成功。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。