同事操作数据库的时候意外的将一个字段全部变成了相同的值,该字段在数据分析的过程中还是有点作用的没办法,只有想办法恢复。
公司用的是阿里云的MySql RDS实例,配置了自动备份。我找到了最近一次的备份将备份文件下载到了服务器。开始的时候想用 percona 工具恢复数据,照着教程安装工具,按步骤恢复数据,但是最终恢复文件一直都是空文件,自己也不知为啥只好换种方法。
- 我在服务器上编译安装了一个MySql5.7。
- 创建一个与原表表接口一样的新表
- 删除新表的表空间
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 没权限,执行第二部
现在是数据恢复了,还缺一步,原表中的该字段恢复,待续。