首页 > Personal > Linux > Mysql通过.frm文件恢复表结构
2017
04-17

Mysql通过.frm文件恢复表结构

因为一个项目innodb的表数据文件只有.frm文件,想要通过.frm文件将表结构恢复回来。在百度找了很多文章都是说通过拷贝文件来恢复,试了很多次都是失败。无意中发现MySQL Utilities 这个mysql工具集里面有一个工具叫mysqlfrm,从字面上就觉得会是和这个文件相关的,看了下说明文档,大致就是可以通过这个工具把.frm文件导出为sql语句,有了sql语句就很容易导入数据库了。

具体用法如下,
mysqlfrm –server=root@localhost –port=3307 data.frm > data.sql
–server用来指定运行的mysql服务器,–port需要指定一个和运行的mysql服务器不同的端口,用来生成一个新的服务器,然后通过这个服务器分析.frm文件来导出sql语句,用起来很简单,不过对于导出使用的服务器版本会有要求,需要高于生成.frm文件的服务器版本。

因为文件比较多,写一个批处理来批量导出sql文件,
@echo off
for /r %%d in (*.frm) do (
mysqlfrm –server=root@localhost –port=3307 “%%d” > “%%~dpnd.sql”
)
pause

然后在批量导入数据库中,
@echo off
for /r %%d in (*.sql) do (
mysql < %%d ) pause MySQL Utilities的安装,Windows可以去https://dev.mysql.com/downloads/utilities/下载,Centos使用yum install mysql-utilities安装即可,使用MySQL Utilities还需要使用Python,如果没有Python的还需要安装。

最后编辑:
作者:wy182000
这个作者貌似有点懒,什么都没有留下。