>START TRANSACTION; -- 开始事务>SELECT*FROM tablename; -- 查看删除前的数据 > DELETE FROM tablename WHERE condition; -- 执行删除操作 > SELECT*FROM tablename; -- 查看删除后的数据>ROLLBACK; -- 回滚操作>SELECT * FROM tablename; -- 查看回滚后的数据>COMMIT; -- 提交事务 1. 2. 3. 4. ...
1、只能处理 binlog为 row模式的 delete、update、insert语句,并且binlog_row_image=FULL; 2、drop table、truncate table等底层的binlog都不是row模式,所以不能恢复这些操作的数据; delete等DML误删除操作 如果在这类误操作就可以直接用上面的工具,基于binlog在备库等先进行恢复,防止数据的二次误操作。 误删数据...
有很多种方式可以恢复回来,这一篇文章就来聊聊使用my2sql工具解析出delete语句的回滚操作(也就是insert),来恢复delete误删除的数据。my2sql工具Github地址:https://github.com/liuhr/my2sql 不过要想使用my2sql恢复数据,需要注意这些:binlog格式必须为row,且binlog_row_image=full(表示记录的二进制日志将包含所...
接下来就是处理/tmp/bin_data文本,将里面的delete语句转化为insert语句,可以通过下面的语句实现转化: cat /tmp/bin_data | sed -n'/###/p'| sed's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;'|sed -r's/(@6.*),/\1;/g'| sed's/@[1-9]=//g'| se...
第五步:把mysqllog的DELETE转换为Insert语句,这个在liunx下操作方便(有人用python转换也可以),把文件mysqllog.sql复制Liunx下 cat mysqllog.sql|sed-n'/###/p'|sed's/### //g;s/\/\*.*/,/g;s/DELETE FROM/;INSERT INTO/g;s/WHERE/SELECT/g;'|sed-r's/(@17.*),/\1;/g'|sed's/@1=/...
测试小伙伴不小心执行了DELETE * FROM 表名语句,删除了测试服十几万条数据。因为测试还需要这些数据,所以只能进行恢复 步骤 找到所执行的DELETE语句并重定向到文件中 1.找到mysql的日志文件binlog(二进制) 2.筛选出执行的DELETE语句,并重定向到文件中方便查看 ...
if [[ $line == "### DELETE FROM"* ]]; then continue elif [[ $line == "### WHERE"* ]]; then insert_values="(" else values=$(echo $line | awk -F'=' '{print $2}' | awk -F' ' '{print $1}') insert_values="${insert_values}$values," # 拼接INSERT语句的值部分 ...
一、开发人员的delete语句 delete数据之前最好先select一下,select review这些数据确实是自己需要删除的数据,之后再备份一下,然后就可以删除了。否则删掉之后,让DBA来用备份恢复,这个真的非常耗时,而且很费力。最好的就是把删除操作做成一个工具,工具来强制备份,依靠人而不是工具或者制度就跟我党一样不靠谱。
Mysql数据库故障:误操作,使用Delete命令删除数据时未添加where子句进行筛选,导致全表数据被删除,所幸...