? 博主介绍:
IT邦德,江湖人称jeames007,10年DBA工作经验
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11gOCP/OCM、
Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,
安装迁移,性能优化、故障应急处理等。
文章目录
- 前言
-
- 一.binlog2sql
-
- 1.1 安装部署
- 1.2 恢复案例
- 2.my2sql
-
- 2.1 安装部署
- 2.2 恢复案例
- 3.MyFlash
-
- 3.1 安装部署
- 3.2 恢复案例
前言 本文结合本人工作10年经验,对MySQL误操作恢复过程做了详细的说明~
![Mysql|MySQL误操作恢复神器一家老小全在这里](https://img.it610.com/image/info8/5ee5cdc2e18648f8afdb667e5267b661.jpg)
文章图片
一.binlog2sql 工具官网
https://github.com/danfengcao/binlog2sql
![Mysql|MySQL误操作恢复神器一家老小全在这里](https://img.it610.com/image/info8/a0929cb15d334b908f489fef64f59bea.jpg)
文章图片
1.1 安装部署
##安装git和pip依赖包
yum install -y git
yum install -y python3
##安装 binlog2sql 工具
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
pip3 install -r requirements.txt
![Mysql|MySQL误操作恢复神器一家老小全在这里](https://img.it610.com/image/info8/4e902f4f6cc04d7c93f80499c7590f5c.jpg)
文章图片
1.2 恢复案例
mysql> create database jem_db;
mysql> use jem_db
mysql> CREATE TABLE test1(id INT ,name varchar(30));
mysql> INSERT INTO test1 values(3,'aa'),(4,'bb');
mysql> delete from test1;
--误删除了
mysql> show master status
![Mysql|MySQL误操作恢复神器一家老小全在这里](https://img.it610.com/image/info8/9ef11f0055574f70b6ed4620bf064b72.jpg)
文章图片
#回滚SQL
python3 /root/binlog2sql/binlog2sql/binlog2sql.py -uroot -proot -djem_db -test1 --start-file=‘binlog.000004’ -B
![Mysql|MySQL误操作恢复神器一家老小全在这里](https://img.it610.com/image/info8/c4b63569dd964b4c864d9df91f870208.jpg)
文章图片
2.my2sql 官网:https://github.com/liuhr/my2sql
2.1 安装部署
也可以直接下载编译好的二进制文件。
wget https://raw.githubusercontent.com/liuhr/my2sql/master/releases/my2sql
mv my2sql /usr/lolca/bin/my2sql
2.2 恢复案例
[root@binlog2sql ~]# mkdir /bk
mysql> flush logs;
##切日志
mysql> show master status;
mysql> show master logs;
##查看所有日志大小CREATE DATABASE `testdb` charset utf8mb4;
use testdb;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`number` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`add_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加的时间',
`content` json DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_name` (`number`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1234 DEFAULT CHARSET=utf8;
INSERT INTO `testdb`.`student` (`id`,`number`,`name`,`add_time`,`content`)
VALUES (1233,26,'ranran','2020-07-15 19:06:03',null);
INSERT INTO `testdb`.`student` (`id`,`number`,`name`,`add_time`,`content`)
VALUES (1232,134,'asdf','2020-07-12 11:08:41',null);
-- 回滚 sql
##确定好启始和结束的位置
my2sql -user root -password root -host 192.168.39.232 -port 3308
-databases testdb -work-type 2sql -start-file binlog.000037 -start-pos 156
-stop-file binlog.000037 -stop-pos 5205 -output-dir /bk
![Mysql|MySQL误操作恢复神器一家老小全在这里](https://img.it610.com/image/info8/60a121234d444babab423ed746e5c491.jpg)
文章图片
![Mysql|MySQL误操作恢复神器一家老小全在这里](https://img.it610.com/image/info8/a2bf7dbd30ca4904b52cf668e6412b9f.jpg)
文章图片
3.MyFlash 3.1 安装部署
官网下载:
https://github.com/Meituan-Dianping/MyFlash
yum -y install git
yum install gcc* pkg-config glib2 libgnomeui-devel -y
git clone https://github.com/Meituan-Dianping/MyFlash.git
cd MyFlash/
gcc -w `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c -o binary/flashback
3.2 恢复案例
cd binary
./flashback --helpUsage:
flashback [OPTION...]Help Options:
-?, --helpShow help optionsApplication Options:
--databaseNamesdatabaseName to apply. if multiple, seperate by comma(,)
--tableNamestableName to apply. if multiple, seperate by comma(,)
--start-positionstart position
--stop-positionstop position
--start-datetimestart time (format %Y-%m-%d %H:%M:%S)
--stop-datetimestop time (format %Y-%m-%d %H:%M:%S)
--sqlTypessql type to filter . support INSERT, UPDATE ,DELETE. if multiple, seperate by comma(,)
--maxSplitSizemax file size after split, the uint is M
--binlogFileNamesbinlog files to process. if multiple, seperate by comma(,)
--outBinlogFileNameBaseoutput binlog file name base
--logLevellog level, available option is debug,warning,error
--include-gtidsgtids to process
--exclude-gtidsgtids to skip
【Mysql|MySQL误操作恢复神器一家老小全在这里】大家点赞、收藏、关注、评论啦 微信公众号
推荐阅读
- 数据结构|每日一学丨Redis 面霸篇(从高频问题透视核心原理)
- 数据库|殃及池鱼!Redis挂了的情况下流量把数据库也打挂了,怎么办()
- 笔记|Mybatis---ResultMap自定义映射规则
- Mybatis笔记|(Mybatis笔记)mybatis-plus 3.4.3.4 + mybatis-plus-generator 3.5.1 代码生成器使用——超详细
- 数据仓库|DolphinScheduler
- 操作系统|操作系统 --- 文件操作和IO
- MySQL数据库|MySQL数据库 --- 事务面试重点
- 聊聊mysql的树形结构存储及查询
- #mysql|mysql--单表的数据查询