MySQL 数据恢复

同事操作数据库的时候意外的将一个字段全部变成了相同的值,该字段在数据分析的过程中还是有点作用的没办法,只有想办法恢复。

公司用的是阿里云的MySql RDS实例,配置了自动备份。我找到了最近一次的备份将备份文件下载到了服务器。开始的时候想用 percona 工具恢复数据,照着教程安装工具,按步骤恢复数据,但是最终恢复文件一直都是空文件,自己也不知为啥只好换种方法。

  1. 我在服务器上编译安装了一个MySql5.7。
  2. 创建一个与原表表接口一样的新表
  3. 删除新表的表空间

ALTER TABLE <table_name> DISCARD TABLESPACE;

/path-mysq-datadir/<port>/data/<database_name>/<table_name>.ibd 文件将被删除

4. 将需要恢复的ibd文件复制到

/path-mysq-datadir/<port>/data/<database_name>/ 目录下

chown mysql:mysql <table_name>.ibd

chmod 640 <table_name>.ibd

5 . 导入表空间

ALTER TABLE <table_name> IMPORT TABLESPACE;

遇到的问题

Error Code: 1808 阿里云实例用的是Mysql5.6我安装的msyql5.7 解决方法 建表时加上 row_format=compact

Error Code:1812 没权限,执行第二部

现在是数据恢复了,还缺一步,原表中的该字段恢复,待续。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注