首页 > 代码库 > 【MySQL】MySQL事务回滚脚本
【MySQL】MySQL事务回滚脚本
MySQL自己的 mysqlbinlog | mysql 回滚不好用,自己写个简单脚本试试:
想法是用mysqlbinlog把需要回滚的事务区域从mysql-bin.file中找到,然后通过脚本再插入DB。
## INSERT 需要将新增数据删除 对应DELETE
## DELETE 需要将删除数据恢复 对应INSERT
## UPDATE 需要将修改数据恢复 对应UPDATE
## 手动读取BINLOG,并找到对应位置和对应事务
## 手动删除除事务外的其他说明语句
INSERT回滚最简单,其次是DELETE的,UPDATE操作比较麻烦。
fun_DELETE() { ##### GET ONE TRANSACTION ROWS ##### local rows=`awk "BEGIN{print $columns + 2}"` ##### GET COUNtS OF TRANSACTION ##### n=`cat $bak_file | grep DELETE | wc -l` ##### GET TABLE NAME ##### table=`sed -n "1p" $binlog | awk "{print $3}"` for ((i=1;i<=n;i++)) do ##### MAKE SQL ##### data=`sed -n ‘3,‘{$rows}’p‘ $binlog | awk ‘{print $1}‘| awk -F ‘=‘ ‘{print $2}‘ | tr -t ‘\n‘ ‘,‘ | sed ‘s/,$//‘ | sed ‘s/^/(/‘ | sed ‘s/$/)/‘` echo $data >> /export/jiangxu/sh/tmp.txt ##### CLEAN bak_file FOR TRANSACTION HAVE DONE ##### done echo done! tr -t ‘\n‘ ‘,‘ /export/jiangxu/sh/tmp.txt }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。