1. 聚能聊>
  2. 话题详情

谁动了我的线上数据?数据库之协同开发那些事儿

你是否有过下面的经历呢?

(一)

攻城狮GG A埋头苦干了两周半,本周四项目终于要上线啦,想想还是有些激动。代码online,预发online,测试online,一切准备就绪,喝杯咖啡,等到了周四下班后业务低峰期,上线啦!一切都在进度条中更新着,100%,上线完成!
虽然内心有6到飞起的感觉,一万次地想拎包去High了…再多看一眼吧,页面打开的那一刻,傻眼了,WHAT,新订正的业务数据哪去啦,页面一个模块的数据都没有加载进来!Orz
不能忍啦,跑到企业群里吼一声,谁动了我的数据啊!
半个小时过去了,木有人回应…
一个小时过去了,有人回应了,“不是我”…
已经接近半夜啦,压抑着愤怒的攻城狮GG A也不敢擅自订正了,万一又牵扯到别人的数据呢,只好暂时回滚,拖着疲惫的身子回家了…“本来我可以去High的啊…”,世界上最痛苦的莫过于大喜大悲了,心疼2秒钟…
mkrbmgoo_jpg_2400w_1i_90Q

(二)

同样,攻城狮GG B在上线前遇到了同样的问题,但是却避免了A的遭遇。
看到数据没了也是不能忍啦,打开数据管理DMS登陆实例->数据方案->数据追踪一看,就在上线前半小时,订正的数据被delete啦…
谁动了我的数据?
攻城狮GG B开启福尔摩斯模式,打开了数据管理DMS->安全审计,发现了同样做数据订正的同事C的操作记录…
找到同事C协同订正完数据后,项目顺利上线。
经过了一次被删,攻城狮GG B每次上线前会先去数据追踪检查下是否有数据被误操作,从此上线数据无忧。

对啦,攻城狮GG B用的就是这个啦,酷炫的数据管理推荐给你:

DMS免费版即支持企业主账号向个人账号授权数据库实例,从源头上实现数据隔离;
DMS高级版支持数据追踪,增删改操作一览无余,自动生成回滚语句,误操作轻松回滚;
DMS高级版支持安全审计,可审计主账号和被授权子账号的行为轨迹,数据库操作尽收眼底。

问题来啦,大家来聊一下

你经历过哪些线上数据被误操作的惨痛经历?
有哪些途径可以快速找到数据误删记录,并进行回滚?
DMS数据追踪2期将支持生成追踪表,数据变更可在追踪表中执行查询,对于数据追踪你还有哪些需求呢?

快来参与 数据追踪 话题拿奖品吧!

参与话题

奖品区域 活动规则 活动已结束,可继续参与讨论哦

  • 奖品一

    优酷VIP月卡 x 1

  • 奖品二

    云栖社区纪念胸针 x 5

  • 奖品三

    云栖定制电脑包 x 3

70个回答

2

jackyliu 已获得云栖定制电脑包

你经历过哪些线上数据被误操作的惨痛经历?

上家公司,游戏内测,我执行了update accounts set gold = 100 where uid = 123,手误输入错了,全部玩家金币被我改成一个值了~~~~~(><)~~~~。后来找回当天零点的备份数据,因为玩家数据还有其他变更,不能直接数据库回档,幸好是内测,玩家不多,几百个,我和老大两个就对比着表,一个一个补给玩家金币~
现在的公司,CTO手抖,把生产库删除了~^
^^_^^_^。后来就做了主从分离,线下只能连从库,只读。

有哪些途径可以快速找到数据误删记录,并进行回滚?

变结构变更需要记录下来,java生态的,推荐flyway;
如果强制全部用户公用一个phpmyadmin,那么可以开启phpmyadmin的数据库变更记录;
采用从库做数据备份;
每天一个全量冷备份;
用阿里云的RDS,^_^

DMS数据追踪2期将支持生成追踪表,数据变更可在追踪表中执行查询,对于数据追踪你还有哪些需求呢?

记录清楚SQL执行的源IP,甚至包括socket连接号,便于追查sql执行来源;
阿里云的这套sql管理工具,能跟phpmyadmin一样,开源么?
送个电脑包吧,谢谢~

数据管理dms 回复

阿里云的数据管理DMS不同于phpmyadmin,无需下载,web页面控制台登录阿里云账号即可,便捷高效。并且提供免费版,这位同学可以试用下哦~我可以帮你向楼主求一个包包,哈哈,https://www.aliyun.com/product/dms

lyrewu 回复

还好手抖的是玩家金币,不是人民币,哈哈哈哈哈
亲,DMS的安全审计即可追查SQL的执行者哦~
https://yq.aliyun.com/articles/72438?spm=5176.8217306.rtdmain.6.JtUwt9

评论
3

shawn.ss 已获得云栖定制电脑包

包包我来啦~~~;

你经历过哪些线上数据被误操作的惨痛经历?
用数据库管理文档结构,一个巨大的文档树存在某张表里,0号元素是整个树的根,应用里不会展示这个元素,但是其他的应用里展示的元素的根都是这个元素,某个家伙手贱觉得这个元素没啥用,直接给删除了。
然后系统看起来一切正常,直到下班回家,接到电话,所有的写入操作的结果全部错了。调错容易,恢复数据难,想干死那个贱人的心都有了。
有哪些途径可以快速找到数据误删记录?
binlog备份?
不过,自己设计的数据库,要求业务层统统是逻辑删除,不会真的物理删除任何数据,如何快速找回嘛,改一下逻辑删除位好了。
DMS数据追踪2期将支持生成追踪表,数据变更可在追踪表中执行查询,对于数据追踪你还有哪些需求呢?
不同表的多版本控制吧,可以迅速回滚某个表到特定时间点的版本(外键约束貌似会导致这件事情很难办吧)

数据管理dms 回复

数据管理DMS的数据追踪就可以回滚哦~找到误操作的SQL,就会看到DMS为你生成的回滚语句啦!!https://help.aliyun.com/knowledge_detail/56226.html

shawn.ss 回复

还有这种操作,刚发现,拜谢

lyrewu 回复

果然是很惨痛的经历,树根没了…摸摸头~选个奖品吧~DMS可以支持单条语句的回滚,很赞哦~

shawn.ss 回复
回复@lyrewu:

想要电脑包,另外树根没有了貌似没办法用DMS的回滚,因为后续的写入操作(建立文件夹)层级都错了,但是不能要求用户重建。。。,【泪】

评论
1

光头菠菜 已获得云栖社区纪念胸针

初学mysql时,线上MySQL 我误操作过,update mysql.user set password='xxxx';没写where,没写where,没写where,
发现没写where那一刻,我的内心是崩溃的。后来旁边大牛说,不打紧,用户链接是缓存到内存的,赶紧恢复就是了。找头一天的备份,赶紧把user表恢复回来。
当时吓死哥啦,脸都白了,手也抖了,🤒

lyrewu 回复

隔着屏幕都能感受到的颤抖啊

光头菠菜 回复
回复@lyrewu:

我想要包包

lyrewu 回复

sorry,包包已经送完了……下次再来啊

评论
2

佩恩六道 已获得优酷VIP月卡

你经历过哪些线上数据被误操作的惨痛经历?
之前做运维DBA出身,经常遇到开发说DBA误delete或误update他们的数据,每次都要手工下载binlog文件,用mysqlbinlog逐个文件分析,为此还写了个脚本,来查找某个字段值变化轨迹,因为都是人工操作,搞一次分析就要小半天,而且是严重的单点,休假都不安宁。

有哪些途径可以快速找到数据误删记录,并进行回滚?
用mysqlbinlog分析binlog,虽然可以手工拼回滚语句,都特别麻烦,一行一行看,还容易出错。
遇到百条以上的数据恢复,只能用备份集重搭数据库,然后应用binlog到指定时间点,被同事戏称“DBA最强黑科技”,我内心呵呵

DMS数据追踪2期将支持生成追踪表,数据变更可在追踪表中执行查询,对于数据追踪你还有哪些需求呢?
批量、批量、批量!
单条数据回滚还可以解决,批量回滚真心搞不定,我需要一个时光机,让全表数据回到原来的模样,然后让我自己来选择订正,订正还是要人工把控的。
PS:岁数大了,恢复数据这种惊心动魄的事情受不了

重要说明:优酷年卡,值得给我

数据管理dms 回复

数据追踪2期 8月17号发布,将支持批量回滚哦!您的需求是我们的动力,来一起玩转追踪表吧!https://www.aliyun.com/product/dms

lyrewu 回复

DBA老司机的需求必须满足啊,期待体验批量回滚~优酷我只发月卡,仅此一张

评论
3

yzsind 已获得云栖社区纪念胸针

1.你经历过哪些线上数据被误操作的惨痛经历?

本想订正数据,让自己瞬间变成千万富翁,update table set money=10000000 where id=1314,
结果大脑短路,写了个 update table set money=10000000 and id=1314,
把where 写成and,mysql数据库竟然语法检测通过,最后全表数据都被订正,瞬间感觉头晕,崩溃。

2.有哪些途径可以快速找到数据误删记录,并进行回滚?

mysql如果误操作丢失数据,基本都是靠备份了,这个恢复时间非常长,并且只有dba可以搞定,如果没有备份数据,那就等着被开。
还有,如果是dba高手可以通过binlog生产回滚sql来恢复数据,但我不会。

3. DMS数据追踪2期将支持生成追踪表,数据变更可在追踪表中执行查询,对于数据追踪你还有哪些需求呢?

DMS的数据追踪让普通开发人员不再担心数据被误操作了,赞!!!

话说,能求礼品吗?

lyrewu 回复

备份恢复确实是一件头晕的事儿,这位同学谈一下使用数据追踪的场景???哈哈,另外,千万富翁看上哪个小礼品了~

评论
0

qujian 已获得云栖社区纪念胸针

前几天为了恢复线上系统的一个bug,要把2000多条没有填上update_time的数据用create_time填上,结果,脑子一抽,居然写成update xxx set create_time=update_time where ... 了,然后不知不觉按下了ctrl+r,按下以后隐隐感觉哪里不对,仔细端详了五分钟,发现原来写反了,赶紧想办法撤回,可是通过binlog太麻烦了,传出去影响也不好,眉头一皱 计上心来,发现还有个日志表,把日志表的时间填上了,填回来时间不完全准确,但也影响不大,因为都是内部用户,吓出一身冷汗,看来mysql workbench 没有执行快捷键是有道理的,这样在去点执行的时候还可以去想想有没有干傻事……

ps:刚刚发完发现那个不是我们的账号,是一个朋友前几天在我手机上登录的,所以重发一遍...

lyrewu 回复

差点把刚才那个打赏了…哈哈哈

评论
1

尼古拉斯雷 已获得云栖社区纪念胸针

不是一次两次勿改数据了,给自己网站的用户改密码,由于他忘记原本的密码了,我就写了条sql语句,update xxx set password='xxx'
,脑子抽了,忘记加上where条件了,全部人的密码都是这个了。吓的我是手冒汗,深吸一口气,还好我有备份。直接回复前一天的记录了,这样做不是一次两次了,所以养成了备份的习惯。

lyrewu 回复

忘记where条件是频率最高的犯错记录啊。。。推荐亲使用数据管理DMS吧,自建数据库只要有外网IP:PORT就可以管理哦~https://dms.console.aliyun.com/#/dms/login

评论
1

刘子铭 已获得云栖社区纪念胸针

公司修改数据都是从正式库修改,还有历史数据遗留问题,会出现莫名的bug,然后公司要求将历史数据重新改正,然后手一抖,把所有企业用户的生成合同日期全部改为同一天了,这还不算什么。有的时候要手动删除一些数据,手一抖,把所有用户信息都删了。真是是吓的尿裤子。😂还好有备份,只是几天的数据要重新导入。妈呀,从此手再也不抖了。

lyrewu 回复

推荐亲使用数据管理DMS吧,可进行数据追踪轻松回滚哦!
自建数据库只要有外网IP:PORT就可以管理哦~https://dms.console.aliyun.com/#/dms/login

评论
1

weyes 已获得云栖定制电脑包

电脑包我来啦~~

1.你经历过哪些线上数据被误操作的惨痛经历?
线上某中心产品总控后台被开发误更新,导致所有用户网站页面打开报错,应该是Navicart工具的自动提交。。。开发同学马上急着要恢复到更新前的状态,但是做的时候发现把这些误操作都恢复其实是个挺费时间的工作。

2.有哪些途径可以快速找到数据误删记录,并进行回滚?
先进行锁表,以免数据再次被污染。分析binlog二进制日志,无奈binlog日志太庞大,就先split切成100M的日志,在切成的日志中定位到我们需要的那个,使用head、cat等命令定位到我们需要的行数区间,然后sed命令将行数区间重定向到文件,构造sql,一个一个update回去,呵呵。

3.DMS数据追踪2期将支持生成追踪表,数据变更可在追踪表中执行查询,对于数据追踪你还有哪些需求呢?
支持导出某段时间范围内执行过的sql语句么?回滚语句一条一条处理也是个耗时的事情。
DMS数据追踪功能很赞!

lyrewu 回复

数据管理2期支持批量回滚,下周四就可以体验啦

评论
4

50183720

哈哈,努力填坑中
855cbeaa634049ecbc16cf0863c7ed67_5c0ac7a27c5843b39346360bb0108d73.jpg

lyrewu 回复

说说你的故事吧!

评论
2

limlighten

前几天为了恢复线上系统的一个bug,要把2000多条没有填上update_time的数据用create_time填上,结果,脑子一抽,居然写成update xxx set create_time=update_time where ... 了,然后不知不觉按下了ctrl+r,按下以后隐隐感觉哪里不对,仔细端详了五分钟,发现原来写反了,赶紧想办法撤回,可是通过binlog太麻烦了,传出去影响也不好,眉头一皱 计上心来,发现还有个日志表,把日志表的时间填上了,填回来时间不完全准确,但也影响不大,因为都是内部用户,下出一身冷汗,看来mysql workbench 没有执行快捷键是有道理的,这样在去点执行的时候还可以去想想有没有干傻事……

limlighten 回复

阿里云有追踪功能就太方便了,这样不用搞binlog了

lyrewu 回复

赞~(≧▽≦)/~

评论
1

浮生递归

月卡月卡月卡~~~~

你经历过哪些线上数据被误操作的惨痛经历?
不是我,我同事。一个项目,好像数据挺多的,应该以G为单位吧。然后一次维护的时候,误删了整个数据库。并且,没!有!备!份!
我不知道他后来是怎么处理的,反正可以想象他当时的内心活动,肯定是!@#!……!

有哪些途径可以快速找到数据误删记录,并进行回滚?
平时,我们也就是翻日志吧,当然,并不能实现回滚。所以通常都是依赖于做好备份工作,以便手工恢复。

DMS数据追踪2期将支持生成追踪表,数据变更可在追踪表中执行查询,对于数据追踪你还有哪些需求呢?
敏感操作增加提醒推送。比如删除等,推送到相关人员的APP上,特别重要的操作,邮件或短信推送给相关人员等。

lyrewu 回复

敏感操作提醒在数据管理DMS里面是天生支持的哦~欢迎体验:https://www.aliyun.com/product/dms
月卡已经没了。。。

评论
0

1318102795925152

虽然看不懂,但还在努力学习当中。

lyrewu 回复

加油!

评论
1

独步武林

看大拿头像先得夸句漂亮!我就是冲你来的请导师转身赐予我包包吧。

1

爱项城

很不错的文章

0

唯壹捌捌壹

公司修改数据都是从正式库修改,还有历史数据遗留问题,会出现莫名的bug,然后公司要求将历史数据重新改正,然后手一抖,把所有企业用户的生成合同日期全部改为同一天了,这还不算什么。有的时候要手动删除一些数据,手一抖,把所有用户信息都删了。真是是吓的尿裤子。😂还好有备份,只是几天的数据要重新导入。妈呀,从此手再也不抖了。

0

1539903132607151

看你们说。我静静的看着

0

益惠宝168

美女工程师厉害👍,下面的全部点赞。

0

益惠宝168

美女工程师厉害👍

0

1538747050582093

初学者

2
5534
浏览
0
收藏
邀请他人互动
关注
1
粉丝
99
话题
4

感兴趣or擅长的领域:

简介:

专注数据库领域产品输出。

支持以数据库为核心的结构化存储产品之间的数据传输。 它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服...

支持MySQL、SQL Server、PostgreSQL、MongoDB、Redis等关系型数据库和NoSQL...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...