linux cpu占用率如何看
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~