在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
mysql 正常运行的时候,查看 table 的结构并不是困难的事。 但是有时 mysql 发生故障,这种方法便不再可行。 当遇到故障,通常使用新的 mysql 实例来恢复当前的数据。 建表是非常重要的步骤,我们必须有其它的方法来寻找 table 的结构。 table 结构定义在哪里 通常关注的用户数据,底层都实际存储在 mysql 数据目录。 mysql 数据目录文件结构是非常清晰的, •目录对应数据库 table 定义的结构,就存在于 frm 文件中,当然管理元数据的 ibdata 也会有记录。 当存在 frm 文件的时候,恢复表结构相对容易; 解析 table 结构 下面介绍 3 种方式,从 frm 文件中,解析得到 create table 命令。 mysqlfrm mysqlfrm 是 mysql utilities 工具集 中的其中之一, mysql utilities 需要 python2 环境,安装非常简单。 $ tar -xvzf mysql-utilities-1.6.5.tar.gz $ cd mysql-utilities-1.6.5 $ python setup.py build $ python setup.py install mysqlfrm 支持两类模式来解读 frm: 直接分析 这种模式比较直接,逐个字节分析 frm 文件,尽可能的提取信息。 这种模式下,需要使用 --diagnostic 参数。 $ mysqlfrm --diagnostic /data/sakila/actor.frm 借助 mysql 实例分析 这种模式,借助新的 mysql 实例,从中完成 frm 的分析工作。 一,从当前的 mysql 服务中 spawn,使用 --server 指定 mysql 服务 $ mysqlfrm --server=root:pass@localhost:3306 --port=3310 /data/sakila/actor.frm 二,启动新的 mysql 实例,使用 --basedir 指定 mysql 程序路径 $ mysqlfrm --basedir=/usr/local/bin/mysql --port=3310 /data/sakila/actor.frm --port 给新的实例指定端口,是为了避免与当前的 3306 端口出现冲突。 dbsake 这是偶然发现的一个工具,文档中它这样介绍自己: dbsake - a (s)wiss-(a)rmy-(k)nif(e) for MySQL 作者一定是一个对 mysql 很有心得的人,工具从下载,安装到使用,简单,利落。 $ curl -s get.dbsake.net > dbsake $ chmod u+x dbsake $ ./dbsake frmdump [frm-file-path] online service 有一些在线的服务,也关注这样的问题。 从 Recover Structure -> from .frm file 入口,上传 frm,就可以得到 create table 命令。 写在最后 在使用上,可以多个工具都测试一下,对比哪个工具恢复的命令更为完善可取,选择最佳的。 参考: 总结 以上所述是小编给大家介绍的mysql 从 frm 文件恢复 table 表结构的3种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对极客世界网站的支持! |
请发表评论