mysqlfrm 恢复异常表

安装mysqlfrm

下载:

mysql-utilities:

https://dev.mysql.com/downloads/utilities/

mysql-connector-python:

https://dev.mysql.com/downloads/connector/python/


创建测试库

create database userdb;

创建一张新表

CREATE TABLE `userinfo` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(150) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

mysqlfrm 恢复异常表_第1张图片

插入测试数据

[root@localhost][userdb]> insert into userinfo select null,'eliott',now();
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
[root@localhost][userdb]> insert into userinfo select null,'mark',now();
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
[root@localhost][userdb]> insert into userinfo select null,'jack',now();
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
[root@localhost][userdb]> insert into userinfo select null,'mary',now();
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
[root@localhost][userdb]> insert into userinfo select null,'Tom',now();

mysqlfrm 恢复异常表_第2张图片

备份数据文件

mysqlfrm 恢复异常表_第3张图片

删除测试表userinfo

mysqlfrm 恢复异常表_第4张图片

把备份文件copy回数据目录

mysqlfrm 恢复异常表_第5张图片

查看测试表userinfo

mysqlfrm 恢复异常表_第6张图片

删除备份文件,然后用mysqlfrm通过备份的frm文件恢复数据结构

mysqlfrm --diagnostic /tmp/userdb/userinfo.frm

mysqlfrm 恢复异常表_第7张图片

重建表

mysqlfrm 恢复异常表_第8张图片

丢弃表空间,复制备份的ibd文件到数据目录

alter table userinfo discard tablespace;

mysqlfrm 恢复异常表_第9张图片

mysqlfrm 恢复异常表_第10张图片

重新导入表空间,恢复完成

alter table userinfo import tablespace;

mysqlfrm 恢复异常表_第11张图片






你可能感兴趣的:(MySQL)