Linux mysql从备份的数据中的恢复数据(从frm和ibd文件还原表结构)

172 阅读1分钟
  • 保证当前系统中没有安装mysql
  • 新安装mysql
  • 使用navicat或mysql命令行创建相同的数据库,结构一致 执行以下语句,把全部表都执行一遍
ALTER TABLE example_table DISCARD TABLESPACE;

example_table 指的是表名 执行完后, 数据库目录下的 .ibd 文件都不见了 执行拷贝, 只拷贝 .ibd 文件: 若是提示权限不足,请提升权限

cp -r /home/sower/app/mysqlbak/mysql/fhxytextbook/ /var/lib/mysql/fhxytextbook/

/home/sower/app/mysqlbak/mysql/fhxytextbook/ 是备份的数据库 /var/lib/mysql/fhxytextbook/是新建的数据库

重新修改数据库文件夹权限

 sudo chown mysql:mysql -R /var/lib/mysql/fhxytextbook/

再次使用 navicat或mysql命令行 执行以下语句,把全部表都执行一遍

ALTER TABLE example_table IMPORT TABLESPACE;

最后重启一下mysql

sudo systemctl restart mysql.service

重要:最好把还原的数据库导出脚本再导入一次。防止莫名的错误,比如ID重复问题。

参考地址:stackoverflow.com/questions/2…