mysql误删除数据-数据回滚教程

mysql误删除数据-数据回滚教程

mysql 误删除

本次使用的原美团开源Mysql 数据闪回工具

传送门:https://github.com/Meituan-Dianping/MyFlash

一,简介

MyFlash的前身是binlong2,后续是美团点评公司技术工程部开发维护的回滚DML操作工具。本工具通过解析V4版本的二进制日志完成回滚操作。与现有的回滚工具相比,它增加了更多的过滤选项,使回滚更容易。该工具已被美团点评内部使用

二,限制

  1. 二进制日志格式必须为【row】行级模式 ,且binlog_row_image =full
  2. 仅支持5.6与5.7 (如果是低版本的mysql 二种方案 1,升级mysql 2,使用binlog2) binlog2sql工具的下载地址:

 binlog2sql工具的下载地址:

  1. 只能回滚DML(增,删,改)

三,详细说明

3.1 安装部署

git clone https://github.com/Meituan-Dianping/MyFlash.git
cd MyFlash/
[root@gitlab MyFlash]# yum install glib2*
[root@gitlab MyFlash]# gcc -w  `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c  -o binary/flashback
#动态编译

mysql误删除数据-数据回滚教程

3.2 开启mysql-binlog

[root@gitlab mysql]# cat /etc/my.cnf|grep "log_bin*"
# log_bin
log-bin=mysql-bin  #名字前缀
log_bin=/var/lib/mysql/mysql-bin  #路径
log_bin_index=/var/lib/mysql/mysql-bin.index  #索引
binlog_format=row   #binlog模式 (行、混合、sql语句)
max_binlog_size = 512M #单个文件大小
expire_logs_day = 30 #保留最近30天
server-id = 1 #ID编号

[root@gitlab mysql]# /etc/init.d/mysqld restart
Restarting mysqld (via systemctl):                         [  OK  ]
登陆mysql 查看binlog开启情况
mysql> show variables like '%log_bin%'

mysql误删除数据-数据回滚教程

 

注意:此工具必须使用row 行级模式

show variables like  'binlog%'; 
##行级模式缺点,binlog日志会增大 原来的3倍  优点:相对安全

mysql误删除数据-数据回滚教程

 

3.3 使用方法

cd binary
./flashback --help

Usage:
  flashback [OPTION...]

Help Options:
  -?, --help                  Show help options

Application Options:
  --databaseNames            指定需要回滚的数据库名。多个数据库可以用“,”隔开。如果不指定该参数,相当于指定了所有数据库。
  --tableNames                指定需要回滚的表名。多个表可以用“,”隔开。如果不指定该参数,相当于指定了所有表。
  --start-position            指定回滚开始的位置。如不指定,从文件的开始处回滚。请指定正确的有效的位置,否则无法回滚

  --stop-position          指定回滚结束的位置。如不指定,回滚到文件结尾。请指定正确的有效的位置,否则无法回滚
  --start-datetime           指定回滚的开始时间。注意格式必须是 “2016-11-17 14:40:00。 如不指定,则不限定时间
  --stop-datetime          指定回滚的结束时间。注意格式必须是 %Y-%m-%d %H:%M:%S。 如不指定,则不限定时间
  --sqlTypes                 指定需要回滚的sql类型。目前支持的过滤类型是INSERT, UPDATE ,DELETE。多个类型可以用“,”隔开。
  --maxSplitSize              一旦指定该参数,对文件进行固定尺寸的分割(单位为M),过滤条件有效,但不进行回滚操作。该参数主要用来将大的binlog文件切割,防止单次应用的binlog尺寸过大,对线上造成压力
  --binlogFileNames          指定需要回滚的binlog文件,目前只支持单个文件,后续会增加多个文件支持
  --outBinlogFileNameBase   指定输出的binlog文件前缀,如不指定,则默认为binlog_output_base.flashback
  --logLevel                  仅供开发者使用,默认级别为error级别。在生产环境中不要修改这个级别,否则输出过多
  --include-gtids            指定需要回滚的gtid,支持gtid的单个和范围两种形式。
  --exclude-gtids            指定不需要回滚的gtid,用法同include-gtids(跳过)

3.4 测试用例

1) 测试环境介绍:

[root@gitlab binary]# cat /etc/redhat-release   #系统版本7.4
CentOS Linux release 7.4.1708 (Core) 
[root@gitlab binary]# uname -a   #系统内核3.10 64位
Linux gitlab.example.com 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@gitlab binary]# mysql -V      #mysql 版本
mysql  Ver 14.14 Distrib 5.6.39, for Linux (x86_64) using  EditLine wrapper

2)模拟数据 我这里把测试库的一些数据拿啦,直接导入sql作为案例使用

 SELECT * FROM `sys_member_msg` WHERE id <=666

mysql误删除数据-数据回滚教程 3) 模拟误删除

	delete from `sys_member_msg` where id<=666  #在查看id小于666的就显示空了

mysql误删除数据-数据回滚教程

 

4)回滚指定文件中的所有【插入、删除、修改】语句 row行级模式 查看binlong,需要添加参数(–base64-output=decode-rows -v)对输出结果解码。

4.1 查看开启binlong

mysql> show variables like 'log_%'; 
+----------------------------------------+--------------------------------+
| Variable_name                          | Value                          |
+----------------------------------------+--------------------------------+
| log_bin                                | ON                             |
| log_bin_basename                       | /var/lib/mysql/mysql_bin       |
| log_bin_index                          | /var/lib/mysql/mysql-bin.index |

13 rows in set (0.00 sec)

4.2 查看binlog位置

mysql> show master status;  #查看binlog位置
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000007 | 16696881 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

4.3 生成回滚数据文件

[root@gitlab binary]# time ./flashback  --sqlTypes='DELETE' --binlogFileNames=/var/lib/mysql/mysql_bin.000007

real	0m0.053s
user	0m0.015s
sys	0m0.035s
#参数意思 看上面用法介绍
#比如:开始时间  -结束时间 --DML语句类型(增删改)、post点、大数据要拆分
#默认产生一个binlog_output_base.flashback文件

mysql误删除数据-数据回滚教程

 

4.4 恢复到数据库

[root@gitlab binary]# mysqlbinlog binlog_output_base.flashback |mysql -uroot -p
Enter password:  #输入mysql密码
#没有反馈,应该OK了

3.5查看数据回滚情况

SELECT * FROM `sys_member_msg` WHERE id <=666

mysql误删除数据-数据回滚教程

四 总结:

1,myflash 只支持 row 模式,如果你现在的binlog是其它模式,切换的时候,会影响主从同步 2,row模式很安全,但是binlog数据量会增加 3-5倍 3,查看row模式下的binlog 需要添加参数(–base64-output=decode-rows -v)对输出结果解码 4,必要给开发生产数据库开放权限,让他们select去吧 5,筛选恢复数据有很多比如:开始时间 -结束时间 –DML语句类型(增删改)、post点、大数据要拆分后逐去恢复 等等 mysql误删除数据-数据回滚教程

最后希望所有运维的同志们,不在背锅,远离背锅。。。。

mysql误删除数据-数据回滚教程

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/114231.html<

(0)
管理的头像管理
上一篇2025-02-17 19:20
下一篇 2025-02-17 19:22

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注