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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 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
相关文章
|
11天前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
88 4
|
7天前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
32 17
|
7天前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
24 12
|
6天前
|
网络协议 关系型数据库 MySQL
Shell 脚本案例
Shell 脚本案例
23 8
|
6天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
19天前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
26 2
|
19天前
|
关系型数据库 MySQL Shell
MySQL数据库一键安装脚本,适合任何版本
MySQL数据库一键安装脚本,适合任何版本
27 2
|
19天前
|
关系型数据库 MySQL 网络安全
全网首例!MySQL8 MGR多主一键搭建脚本分享
全网首例!MySQL8 MGR多主一键搭建脚本分享
19 1
|
11天前
|
运维 监控 Shell
自动化运维之宝:编写高效的Shell脚本
【8月更文挑战第31天】在运维的世界里,Shell脚本是一把瑞士军刀,它让日常任务变得简单而高效。本文将通过浅显易懂的语言和实际案例,带你领略Shell脚本的魅力,并教你如何打造属于自己的自动化工具箱。无论你是初学者还是资深运维,这篇文章都将为你打开一扇窗,让你看到不一样的风景。让我们一起探索Shell脚本的世界吧!
|
19天前
|
存储 Shell 数据安全/隐私保护
minio一键安装脚本分享(shell和python)
minio一键安装脚本分享(shell和python)
37 0