使用binlog2sql恢复数据

发布时间:2024-01-26
系统运维
误删除数据的话,oracle里面我们可以使用闪回功能找回误操作的数据。
在mysql里面,如果我们有延迟从库的话,也可以找回之前的数据,但是有时候不太好使(因为追数据到误操作前的准确的时间点有时候也不太好把握)。
对于误操作数据的闪回,我们一般推荐 binlog2sql 或者myflash(美团点评开源的)
本篇文章, 我们介绍下 binlog2sql的用法:
binlog2sql 【首级推荐使用】
官网:https://github.com/danfengcao/binlog2sql
注意: binlog必须是row格式,并且是full类型的记录。
安装:?
yum?update?nss?curl?libcurl?-y?#?centos6需要升级下这个包,不然没法去github拉代码cd?/root/git?clone?https://github.com/danfengcao/binlog2sql.git?&&?cd?binlog2sqlpip?install?-r?requirements.txt
授权:
>?grant?select,?replication?slave,?replication?client?on?*.*?to?\\\'flashback\\\'@\\\'192.168.11.20\\\'?identified?by?\\\'admin\\\';
> use testdb;
[testdb] > select * from t_stud where name like \\\’y%\\\’;
——- ————— —– ——– ——— ———–
| stuid | name? ? ? ? ? | age | gender | classid | teacherid |
——- ————— —– ——– ——— ———–
|? ? ?5 | yu wutong? ? ?|? 26 | m? ? ? |? ? ? ?3 |? ? ? ? ?1 |
|? ? 10 | lee lingshan? |? 19 | f? ? ? |? ? ? ?3 |? ? ? null |
|? ? 11 | john chengzhi |? 23 | m? ? ? |? ? ? ?6 |? ? ? null |
——- ————— —– ——– ——— ———–
[testdb] > update t_stud set age=100 where name like \\\’y%\\\’;? ? — 看到有3行受到影响
query ok, 3 rows affected (0.01 sec)
rows matched: 3? changed: 3? warnings: 0
[testdb] > select * from t_stud where name like \\\’y%\\\’;
——- ————— —– ——– ——— ———–
| stuid | name? ? ? ? ? | age | gender | classid | teacherid |
——- ————— —– ——– ——— ———–
|? ? ?5 | yu wutong? ? ?| 100 | m? ? ? |? ? ? ?3 |? ? ? ? ?1 |
|? ? 10 | lee lingshan? | 100 | f? ? ? |? ? ? ?3 |? ? ? null |
|? ? 11 | john chengzhi | 100 | m? ? ? |? ? ? ?6 |? ? ? null |
——- ————— —– ——– ——— ———–
解析出标准sql:
cd?/root/?先用mysqlbinlog找到误操作的那个地方binlog文件及位移点,然后使用下面命令解析:python?/root/binlog2sql/binlog2sql/binlog2sql.py?-h292.168.11.20?-p3306?-uflashback?-p\\\'admin\\\'?-d?testdb?-t?t_stud?--start-file=\\\'mysql-bin.000040\\\'?--start-position=10030?--stop-position=10334
1 解析出回滚sql:
cd?/root/?python?/root/binlog2sql/binlog2sql/binlog2sql.py?--flashback?-h292.168.11.20?-p3306?-uflashback?-p\\\'admin\\\'?-d?testdb?-t?t_stud?--start-file=\\\'mysql-bin.000040\\\'?--start-position=10030?--stop-position=10334
解析出的结果类似这样:
update?`testdb`.`t_stud`?set?`stuid`=11,?`name`=\\\'john?chengzhi\\\',?`age`=23,?`gender`=\\\'m\\\',?`classid`=6,?`teacherid`=null?where?`stuid`=11?and?`name`=\\\'john?chengzhi\\\'?and?`age`=100?and?`gender`=\\\'m\\\'?and?`classid`=6?and?`teacherid`?is?null?limit?1;?#start?10030?end?10334?time?2018-07-15?14:17:58update?`testdb`.`t_stud`?set?`stuid`=10,?`name`=\\\'lee?lingshan\\\',?`age`=19,?`gender`=\\\'f\\\',?`classid`=3,?`teacherid`=null?where?`stuid`=10?and?`name`=\\\'lee?lingshan\\\'?and?`age`=100?and?`gender`=\\\'f\\\'?and?`classid`=3?and?`teacherid`?is?null?limit?1;?#start?10030?end?10334?time?2018-07-15?14:17:58update?`testdb`.`t_stud`?set?`stuid`=5,?`name`=\\\'yu?wutong\\\',?`age`=26,?`gender`=\\\'m\\\',?`classid`=3,?`teacherid`=1?where?`stuid`=5?and?`name`=\\\'yu?wutong\\\'?and?`age`=100?and?`gender`=\\\'m\\\'?and?`classid`=3?and?`teacherid`=1?limit?1;?#start?10030?end?10334?time?2018-07-15?14:17:58
2 修复下数据,去掉结尾的#及后面的内容:
sed?-i.bak\\\'s/#.*//g\\\'?/root/rollback.sql
3 将数据恢复到数据库中:
use?testdb?;update?`testdb`.`t_stud`?set?`s
上一个:牛肉小串烧烤制作方法 怎样做牛肉小串烧烤
下一个:如何养护球根海棠才能使花色更鲜艳

雷达物位计的分类有哪些
怎么瘦臀部 你会使用这个些方法吗
茶树油灭活脊髓灰质炎病毒的试验观察
企业seo是外包好还是专门招人做好
西兰花的做菜方法 可以做成什么吃
日式经典炒面的制作方法 日式经典炒面的制作方法介绍
荣耀10青春版和一加6t对比(荣耀10青春版和一加6t对比图)
一本结婚证可以通用吗
idg投资公司,IDG是什么
编码器如何影响机械设备工作的精度