同事在生产上误删了数据,也没有记住那几条数据的内容,无奈找到后台要求恢复。一开始想到的就是通过mysql备份文件(frm和ibd)和binlog,但是binlog是记录sql语句的日志,可能并不会精确到字段信息上,所以就直接尝试通过备份文件进行操作。
安装MySQL Utilities
https://dev.mysql.com/downloads/utilities/
终端执行:mysqlfrm --diagnostic myfile.frm,得到表结构,期间可能会出现ImportError: No module named connector的错误,强烈建议从官网下载驱动https://dev.mysql.com/downloads/connector/python/
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB
mysql> CREATE mytable (int i);
mysql> ALTER TABLE mytable DISCARD TABLESPACE;
然后把ibd的备份文件复制到mysql的数据目录下,覆盖之前的ibd文件,mac下mysql数据文件路径/usr/local/mysql/data
mysql> ALTER TABLE r IMPORT TABLESPACE;SHOW WARNINGS;
功成