MySQL回滚脚本: 误操作delete binlog回滚shell脚本

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL回滚脚本: 误操作delete binlog回滚shell脚本

使用条件

mysql为 行模式 rows

查找删除点

通过大致时间,获取误操作的position位置点和时间点

# 开始时间
mysqlbinlog --base64-output=decode-rows -vvv --start-datetime='2021-07-15 16:30:00' --stop-datetime='2021-07-15 19:00:00'  /mydata/3306/binlog/mysql-bin.000003 |grep -i -A 50 -B 50 '表名 |grep -i -A 50   -B 50    'delete'|head  -n 100
# 结束时间 //这里的stop时间最好给的大一点别漏了
mysqlbinlog --base64-output=decode-rows -vvv --start-datetime='2021-07-15 16:30:00' --stop-datetime='2021-07-15 19:00:00'  /mydata/3306/binlog/mysql-bin.000003 |grep -i -A 50 -B 50 '表名 |grep -i -A 50   -B 50    'delete'|tial   -100

参数

# 知道详细位置使用
--stop-position=
--start-position=
# 知道大体位置使用  需要修改脚本里的参数
--start-datetime
--stop-datetime

脚本

使用精确的时间点进行操作即可

#!/bin/bash
# 开始时间
starttime='2022-02-21 14:49:48'
# 结束时间
endtime='2022-02-21 16:25:31'
# binlog日志路径
logname='/mydata/3306/binlog/mysql-bin.000008'
# 数据库名
db=test
# 回滚表名
table=t3
# 回滚文件输出路径
tmpfile='/tmp/mysql_roll_t3'
# mysql连接用户
User='dba'
# mysql 连接密码
pwd="123456"
# mysql 主机地址
Host='127.0.0.1'
mysqlbinlog --base64-output=decode-rows -vvv --start-datetime="${starttime}" --stop-datetime="${endtime}"  ${logname} |sed -n '/### DELETE FROM `'${db}'`.`'${table}'`/,/COMMIT/p' | \
sed -n '/###/p'    | \
sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;'   > ${tmpfile}
n=0;
for i in `mysql -uroot -ptkamc.00 --skip-column-names --silent -e "desc ${db}.${table}" |awk '$0=$1'`;
do
        ((n++));
done
sed -i -r "s/(@$n.*),/\1;/g" ${tmpfile}
sed -i 's/@[1-9].*=//g'     ${tmpfile}
sed -i 's/@[1-9][0-9]=//g' ${tmpfile}

分享是一种精神

好用点个赞谢谢

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
SQL 监控 关系型数据库
MySQL怎么全局把一张表的数据回滚
MySQL怎么全局把一张表的数据回滚
23 2
|
1月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
288 4
|
5天前
|
SQL 关系型数据库 MySQL
|
13天前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
40 12
|
14天前
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
106 11
|
9天前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
21 2
|
17天前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
19天前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
31 2
|
28天前
|
SQL 关系型数据库 MySQL
MySQL数据库中给表添加字段并设置备注的脚本编写
通过上述步骤,你可以在MySQL数据库中给表成功添加新字段并为其设置备注。这样的操作对于保持数据库结构的清晰和最新非常重要,同时也帮助团队成员理解数据模型的变化和字段的具体含义。在实际操作中,记得调整脚本以适应具体的数据库和表名称,以及字段的详细规范。
31 8
|
3天前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
8 0