加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

删库不跑路-详解MySQL数据恢复

发布时间:2019-08-21 03:06:06 所属栏目:MySql教程 来源:程淇铭
导读:日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA。 1 前言 数据恢复的前提的做好备份,且开启 binlog, 格式为 row。如果没有备份文件,那么删掉库表后就真的删掉了,

  3.执行这个 GTID 的事务

  1. SET SESSION GTID_NEXT='对应的 GTID 值';  
  2. BEGIN; COMMIT;  
  3. SET SESSION GTID_NEXT = AUTOMATIC; 

  4.继续同步

5 闪回

闪回操作就是反向操作,比如执行了 delete from a where id=1,闪回就会执行对应的插入操作 insert into a (id,...) values(1,...),用于误操作数据,只对 DML 语句有效,且要求 binlog 格式设为 ROW。本章介绍两个比较好用的开源工具

5.1 binlog2sql

binlog2sql 是大众点评开源的一款用于解析 binlog 的工具,可以用于生成闪回语句,项目地址 binlog2sql

5.1.1 安装

  1. wget https://github.com/danfengcao/binlog2sql/archive/master.zip -O binlog2sql.zip  
  2. unzip binlog2sql.zip  
  3. cd binlog2sql-master/  
  4. # 安装依赖  
  5. pip install -r requirements.txt 

5.1.2 生成回滚SQL

  1. python binlog2sql/binlog2sql.py --flashback   
  2. -h<host> -P<port> -u<user> -p'<password>' -d<dbname> -t<table_name>  
  3. --start-file='<binlog_file>'   
  4. --start-datetime='<start_time>'   
  5. --stop-datetime='<stop_time>' > ./flashback.sql  
  6. python binlog2sql/binlog2sql.py --flashback   
  7. -h<host> -P<port> -u<user> -p'<password>' -d<dbname> -t<table_name>   
  8. --start-file='<binlog_file>'   
  9. --start-position=<start_pos>   
  10. --stop-position=<stop_pos> > ./flashback.sql 

5.2 MyFlash

MyFlash 是由美团点评公司技术工程部开发维护的一个回滚 DML 操作的工具,项目链接 MyFlash

限制:

  •  binlog格式必须为row,且 binlog_row_image=full
  •  仅支持5.6与5.7
  •  只能回滚DML(增、删、改)

5.2.1 安装

  1. # 依赖(centos)  
  2. yum install gcc*  pkg-config glib2 libgnomeui-devel -y  
  3. # 下载文件  
  4. wget https://github.com/Meituan-Dianping/MyFlash/archive/master.zip -O MyFlash.zip  
  5. unzip MyFlash.zip  
  6. cd MyFlash-master  
  7. # 编译安装  
  8. gcc -w  `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c  -o binary/flashback  
  9. mv binary /usr/local/MyFlash  
  10. ln -s /usr/local/MyFlash/flashback /usr/bin/flashback 

5.2.2 使用

生成回滚语句

  1. flashback --databaseNames=<dbname> --binlogFileNames=<binlog_file> --start-position=<start_pos> --stop-position=<stop_pos> 

执行后会生成 binlog_output_base.flashback 文件,需要用 mysqlbinlog 解析出来再使用

  1. mysqlbinlog -vv binlog_output_base.flashback | mysql -u<user> -p  

【编辑推荐】

  1. 如何在Docker中部署MySQL数据库?
  2. 企业使用数据库的12种姿势
  3. 打破MySQL变慢瓶颈,是它们限制了MySQL性能
  4. 网络带宽如何影响 MySQL 性能
  5. MongoDB数据库误删后的恢复
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读