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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL 数据库
阿里云MySQL线上备份数据恢复
阿里云MySQL线上备份数据恢复
|
5月前
|
SQL 弹性计算 关系型数据库
服务器数据恢复-华为ECS云服务器mysql数据库数据恢复案例
云服务器数据恢复环境: 华为ECS云服务器,linux操作系统,mysql数据库(innodb引擎)。作为网站服务器使用。 云服务器故障: 在执行mysql数据库版本更新测试时,误将本应该在测试库上执行的sql脚本执行在生产库上了,生产库上的部分表被truncate,部分表内有少量数据被delete。 需要恢复被truncate的表以及被少量数据被delete的表。
服务器数据恢复-华为ECS云服务器mysql数据库数据恢复案例
|
2月前
|
SQL 存储 关系型数据库
【MySQL核心】MySQL 数据恢复-ibd2sql
【MySQL核心】MySQL 数据恢复-ibd2sql
|
3月前
|
SQL 存储 关系型数据库
|
3月前
|
存储 关系型数据库 MySQL
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)(一)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)
65 0
|
5月前
|
关系型数据库 MySQL Shell
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)(二)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)
38 0
|
11月前
|
存储 关系型数据库 MySQL
数据库数据恢复—MySQL数据库误删除表数据的数据恢复案例
数据库数据恢复环境: 一台本地windows sever操作系统服务器,服务器上部署mysql数据库单实例,引擎类型为innodb,表内数据存储所使用表空间类型为独立表空间。无数据库备份,未开启binlog。 数据库故障&分析: 工作人员在执行Delete命令删除数据时未添加where子句进行筛选,导致全表数据被删除,删除后未对该表进行其他操作。
数据库数据恢复—MySQL数据库误删除表数据的数据恢复案例
|
5月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—windows server下Mysql数据库数据恢复案例
mysql数据库数据恢复环境: 本地服务器,windows server操作系统 ,部署有mysql单实例,数据库引擎类型为innodb,独立表空间,无数据库备份,未开启binlog。 mysql数据库故障: 工作人员使用Delete命令删除数据时未添加where子句进行筛选,导致全表数据被删除,删除后未对该表进行任何操作。
|
关系型数据库 MySQL 数据库
企业实战(15)阿里云数据库RDS MySQL 物理全备文件数据恢复至自建数据库Mysql 5.7中
企业实战(15)阿里云数据库RDS MySQL 物理全备文件数据恢复至自建数据库Mysql 5.7中
348 0