Mysql 45讲学习笔记(三十一)误删数据

网友投稿 349 2022-08-23

Mysql 45讲学习笔记(三十一)误删数据

一.产生背景

drop table命令,通过binlog传给所有从库和级联从库,导致整个集群的实例都会执行该命令

二. MySQL误删数据分类:

使用delete语句误删除数据行drop table或truncate table误删数据表drop database删除数据库rm命令误删整个MySQL实例

三.误删行

Flashback工具闪回进行数据恢复

原理:修改binlog内容,拿回原库重放

注意事项:

不要在主库执行这些操作

解决方法:

找一个从库作为临时库,在临时库上执行这些操作,确认临时库的数据,再恢复主库

防止出现对主库数据的二次伤害

预防措施:

将sql_safe_updates 参数设置为 on,如果忘记delete或者update中写where条件,或者没有包含索引字段,这条语句会执行报错代码上线前,必须进行SQL审计

四.误删库 /表

要想恢复数据,就需要使用全量备份,加增量日志的方式这个方案要求线上有定期的全量备份,并且能够实时备份binlog

假如有人中午12点误删一个库,恢复数据的流程如下:

取最近一次全量备份 ,假设这个库是一天一备,上次备份是当天0点用备份恢复出一个临时库;从日志备份里面,取出凌晨0点之后的日志把这些日志,除了误删除数据的语句外,全部应用到临时库

如何加速数据恢复?

如果这个临时库有多个数据库,可以使用mysqlbinlog命令时,加上一个-database参数,用来指定误删表所在的库

避免恢复数据时应用其他库日志的情况。

在应用日志的时候,需要跳过12点误操作的那个语句的binlog

mysqlbinlog方法恢复数据还是不够快(恢复时间不可控)

如何误删表,最好就是只恢复这张表,重放这张表的操作,但是mysqlbinlog工具不能指定解析一个表的日志。用mysqlbinlog解析出日志应用,应用日志的过程只能是单线程

延迟复制备库

延迟复制的备库是一种特殊的备库,通过change master to master_delay=N命令,可以指定这个备库持续保持跟主库有N秒延迟

比如讲N设置为3600,如果主库上有数据被误删了,在1个小时候内发现这个误操作命令,这个命令在延迟复制的备库执行,这时候这个备库上执行stop salve命令

五.预防误删库/表的方法

账号分离---- 只给开发同学DML权限删除表,先给表改名,观察一段时间业务影响再删除,给表名加固定后缀(_to_be_deleted),只删除固定后缀的表

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python中5个常用的内置高阶函数
下一篇:合并单元格
相关文章

 发表评论

暂时没有评论,来抢沙发吧~