加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2019-08-25 15:31:27 所属栏目:编程 来源:程淇铭
导读:一般事变中,总会有因手抖、写错前提、写错表名、错连出产库造成的误删库表和数据的工作产生,那么,假如连数据都规复不了,还要什么 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

(编辑:湖南网)

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

热点阅读