当前位置: 首页 > news >正文

【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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 工厂模式和策略模式的区别以及使用
  • LLM 学习之「向量数据库」
  • FreeSWITCH
  • ZLMediaKit如何结合webrtc实现双向对讲
  • 【MySQL】2.MySQL实际操作
  • [C#数据加密]——MD5、SHA、AES、RSA
  • Chainlit快速实现AI对话应用将聊天数据的持久化到Mongo非关系数据库中
  • CI/CD——CI持续集成实验
  • 解决No module named ‘tensorflow‘
  • linux共有云主机ssh升级(以openEuler22.03为例)
  • 高级java每日一道面试题-2024年8月12日-设计模式篇-请列举出在JDK中几个常用的设计模式?
  • Web Vitals:提升用户体验的关键指标
  • VR虚拟展厅与传统实体展厅相比,有哪些优势?
  • PostgreSQL 练习 ---- psql 新增连接参数
  • SpringBoot中整合Mybatis
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【EOS】Cleos基础
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Angular Elements 及其运作原理
  • ERLANG 网工修炼笔记 ---- UDP
  • Hibernate【inverse和cascade属性】知识要点
  • Leetcode 27 Remove Element
  • ViewService——一种保证客户端与服务端同步的方法
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 关于Java中分层中遇到的一些问题
  • 简单易用的leetcode开发测试工具(npm)
  • 微服务核心架构梳理
  • 阿里云服务器如何修改远程端口?
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​用户画像从0到100的构建思路
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #includecmath
  • (Forward) Music Player: From UI Proposal to Code
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (rabbitmq的高级特性)消息可靠性
  • (第30天)二叉树阶段总结
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (五)Python 垃圾回收机制
  • (一) 初入MySQL 【认识和部署】
  • (转)fock函数详解
  • (转)linux 命令大全
  • (转)socket Aio demo
  • (转)为C# Windows服务添加安装程序
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 5种线程安全集合
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net 提取注释生成API文档 帮助文档