前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL workbench的一个坑

MySQL workbench的一个坑

作者头像
jeanron100
发布2019-09-08 22:01:51
2.4K0
发布2019-09-08 22:01:51
举报

今天一个开发同事找到我们,问能不能帮忙做一个存储过程的恢复,因为这是一套开发测试环境,所以我们给了开发足够的权限使用,每天会在后端做一次数据库备份工作。

碰到这种数据恢复的情况,倒不是很稀奇了,不过我还是重新了解了下数据丢失的整个过程,根据描述这个存储过程不是手工直接删除的,这位同学是在workbench端打开了这个存储过程,在这个基础上进行修改,然后

存储过程就不见了。我对于这种看起来奇怪的问题比较感兴趣,于是就去他的工位那里进行了解。

经过他的描述和环境的情况,这个存储过程(假设是test_proc)通过workbench查看不到,我在后端进行了检查,在information_schema.routines里面找了下,确实没有,所以不是权限丢失的问题。

为什么这个存储过程会平白无故的不见了呢,我和这位同学聊得更细了些,让他在本地环境复现了下这个问题,他复现的步骤是:

  1. 创建一个新的存储过程test_proc
  2. 通过workbench工具打开,做一些编辑改动,故意修改几处让存储过程存在一些编译错误
  3. 编译失败,然后选择不保存退出
  4. 再次查看列表发现,刚刚的存储过程不见了。

对于这个操作,我还是带着一些幻想,如果是近期创建的,完全可以不用备份就从binlog里面抓取得到存储过程的语句,同时也可以看下在操作的那个时间节点,后端是不是做了drop的相关操作。

结果分析binlog发现,里面有多处drop procedure if exists的日志,可见我们的存储过程在变更中其实是分为两个步骤,一个是删除,一个是重建,而这个操作带来的风险就是一旦不保存退出,则会导致之前的变更被刷掉,这个问题严格来说是工具和使用中的理解的偏差导致。

如果是一个线上业务,那问题就来了。

目前对于MySQL应用开发来说,主要有以下的几类客户端工具,我们很少关注是否付费,也很容易忽略它和我们使用中的一些理解的偏差。

(1)SQLyog

SQLyog 是一个快速而简洁的管理MySQL数据库的图形化工具,由业界著名的Webyog公司出品,属于付费产品。

(2)Navicat

是一套快速、可靠并价格适中的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设计,它的设计符合数据库管理员、开发人员及中小企业的需要,属于付费产品。

(3)MySQL Workbench

为MySQL设计的ER/数据库建模工具,可以支持数据库管理、数据迁移、数据建模等功能,它同时有开源和商业化两个版本。

(4)SQL developer

这个工具是Oracle推出的一款免费的数据库管理工具,它主要支持Oracle,如果要支持MySQL,则需要额外下载一个驱动包。

工具可以简化我们的工作,但是显然没有完美的工具。有时候工具带来问题。。。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档