关于mysql:技术分享-MySQL数据误删除的总结

5次阅读

共计 2068 个字符,预计需要花费 6 分钟才能阅读完成。

欢送来到 GreatSQL 社区分享的 MySQL 技术文章,如有疑难或想学习的内容,能够在下方评论区留言,看到后会进行解答

内容提要

    1. 用 delete 语句
    1. 应用 drop、truncate 删除表以及 drop 删除库
    1. 应用 rm 删除实例
    1. 小结

1. 应用 delete 语句

复原形式:应用 binlog,利用 Flashback 工具复原,Flashback 的原理是批改 binlog 拿到原库里回放,这个计划的前提是 binlog_format=row 并且 binlog_row_image=full

单个事务的解决:
1.insert 对应的 write_row event 改成 delete_row event
2.delete 对应的 delete_row event 改成 write_row event
3.update binlog 中记录了批改前和批改后的值,对掉地位就能够了

多个事务的解决留神调整事务的程序,说完预先解决,上面说下事先预防:
1. 将 sql_safe_updates 设置为 on,这样 delete 和 update 中无 where 子句的语句就会报错,生产如果要执行整表删除能够用 truncate 或者 where 1=1。
2. 上线,必须做 sql 审计,至多也要在测试环境实现验证。

2. 应用 drop、truncate 删除表以及 drop 删除库

复原形式:全量备份 +binlog 复原,这里无奈应用 Flashback 工具,起因是 drop table、truncate table 即应用的是 binlog_format=row 但在 binlog 中记录还是 statement 格局

复原的技巧:因为应用 mysqlbinlog 无奈指定表复原,能够将全量复原出的长期库做为主库的备库,而后指定表复原,能够放慢复原速度。复原形式:应用提早复制的备库,5.6 当前的性能通过 change master to master_delay=N,N 的单位是秒。

change master to master_delay=N

缩小误操作的倡议,账号拆散:
1. 业务账号,默认只给 select update insert 权限,delete 权限须要按表申请,DDL 通过运维平台实现,如有主动建表的需要,能够指定分 create table 的权限。
2. 开发共事和 dba 只给只读权限,变更操作通过运维平台实现,如果须要更高权限,再独自申请。
3. 删除表的时候遵循修先改表名再删除的形式操作,表名对立命名前缀,并放到指定的长期库里,删除操作由平台主动对立实现。

3. 应用 rm 删除实例

这个就只能靠咱们的 HA 了,如果零碎层面误操作,把咱们的集群主机干掉了,那就得靠咱们的跨机房 HA 了。

4. 小结

以上是对误删除数据恢复的总结,作为 dba 咱们也要时刻关注业务,尽管被误删除的数据肯定是要找回来的,然而复原业务不肯定要复原全副数据。

举个例子, 咱们误操作的是一张日志表只写不读那就不影响业务,给咱们复原的工夫就比拟拮据,不复原那是必定不行滴!又或者是咱们进行了 drop table,交易要写这张表,简直不读,那先复原个表构造。这些要日常积攒业务知识,并迅速与开发确认,确保本人做出的决策能复原业务且不影响业务完整性。

每次误操作都是血的教训,在没有想分明 sql 执行的后果之前,先不要敲下回车键哦!数据是公司的生命线,咱们做为数据库管理员,要守好公司的生命线。

最初,作为 dba 技术原理要精通,库对应的业务也要理解哦,这样遇到问题的时候咱们能力找到更全面更正当的解决方案。

Enjoy MySQL :)

文章举荐:

GreatSQL MGR FAQ
https://mp.weixin.qq.com/s/J6…

万答 #12,MGR 整个集群挂掉后,如何能力主动选主,不必手动干涉
https://mp.weixin.qq.com/s/07…

『2021 数据技术嘉年华·ON LINE』:《MySQL 高可用架构演进及实际》
https://mp.weixin.qq.com/s/u7…

一条 sql 语句慢在哪之抓包剖析
https://mp.weixin.qq.com/s/AY…

万答 #15,都有哪些状况可能导致 MGR 服务无奈启动
https://mp.weixin.qq.com/s/in…

技术分享 | 为什么 MGR 一致性模式不举荐 AFTER
https://mp.weixin.qq.com/s/rN…

对于 GreatSQL

GreatSQL 是由万里数据库保护的 MySQL 分支,专一于晋升 MGR 可靠性及性能,反对 InnoDB 并行查问个性,是实用于金融级利用的 MySQL 分支版本。

Gitee:
https://gitee.com/GreatSQL/Gr…

GitHub:
https://github.com/GreatSQL/G…

Bilibili:
https://space.bilibili.com/13…

微信 &QQ 群:
可搜寻增加 GreatSQL 社区助手微信好友,发送验证信息“加群”退出 GreatSQL/MGR 交换微信群

QQ 群:533341697
微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 公布!

正文完
 0