【MySQL 核心】MySQL数据恢复-dbsake

简介

dbsake 是一个古老的数据库管理工具,集成了 MySQL 多种使用场景的工具,你可以用它提取解析 MySQL 的 frm 文件来获取建表语句或视图,可以检查 MySQL 配置信息用来升级 MySQL、自动部署沙盒实例、编解码 MySQL 文件名、查看 ibdata文件中缓存的内容。这些都是老版本 MySQL 不支持的一些功能,现在基本都已经兼容了,我们今天主要使用的是他解析 frm 文件的功能。

项目地址:https://github.com/abg/dbsake

使用前请安装如下依赖:

  • Requires python v2.6+
  • jinja2 >= 2.2
  • click >= 2.0

安装

# 下载
curl -s get.dbsake.net > dbsake

# 添加执行权限
chmod u+x dbsake

# 添加到 bin 目录
mv dbsake /usr/local/bin/

# 验证
dbsake --help

使用

这里说下解析 .frm 文件,获取建表语句的功能。

解析单个文件

dbsake  frmdump /your_path/test.frm

解析多个文件

dbsake  frmdump /your_path/*.frm

将建表语句或视图追加到文本

dbsake  frmdump /your_path/*.frm > create_table_or_view.sql

将建表语句或视图导入到数据库

dbsake  frmdump /your_path/*.frm | mysql  database_name

将建表语句和创建视图分开

有时候你需要将建表语句和视图分开,这样可以避免导入视图时出现表不存在的提示。

# 过滤出视图
egrep -B 7  '^CREATE ALGORITHM'  /your_path/create_table_or_view.sql > /your_path/view.sql

# 过滤建表语句
egrep -v '^CREATE ALGORITHM'  /your_path/create_table_or_view.sql > /your_path/create_table.sql

获取 innodb 表名

有时候你只想获取 innodb 表的建表语句,因为 MyISAM 的就恢复十分简单。

# 先进入你的 MySQL 的数据目录
dbsake frmdump $(ll  *.ibd|awk '{print $NF}'|awk -F.  '{print $1}'|awk '{print $1".frm"}') >/your_path/create_table.sql

统计表或视图的数量

# 统计恢复出来的表个数
grep '^CREATE TABLE' /tmp/create_table.sql|wc -l

# 统计视图个数
grep '^CREATE ALGORITHM' /tmp/view.sql|wc -l

错误处理

在导入到数据时,你可能会遇到时间字段默认值无效的问题,修改文件内容可以解决这个问题:

# 默认值无效
# 修改 datetime 类型 
sed -i 's#datetime DEFAULT NULL#datetime null DEFAULT NULL#g' /your_path/create_table.sql 

# 修改 timestamp 类型
sed -i 's#timestamp DEFAULT NULL#datetime null DEFAULT NULL#g' /your_path/create_table.sql

完整解决方案参见:https://blog.csdn.net/weixin_45385457/article/details/141136121

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值