mysql数据恢复

使用MySQL第三方工具binlog2sql

binlog2sql,一款基于python开发的开源工具,是由大众点评团队的DBA使用python开发出来的,从MySQL
binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。其功能有:

 数据快速回滚(闪回)
 主从切换后新master丢失数据的恢复
 从binlog生成标准SQL,带来的衍生功能

一、安装python
1、安装python3环境(Linux本省自带python2环境)
安装依赖:

yum install -y gcc gcc-c++ zlib zlib-devel libffi-devel openssl openssl-devel pcre pcre-devel yum-utils vim wget tree htop sqlite-devel

在这里插入图片描述
2、解压配置Python-3.6.5.tgz
安装
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

tar -zxf  Python-3.6.5.tgz

配置安装参数

./configure --prefix=/usr/local/Python-3.6.5

mysql数据恢复_第1张图片
编译安装

 make && make install

在这里插入图片描述
3、添加软链接,让python3和pip3这两个命令指向刚刚安装的python3.6

ln -s /usr/local/python3.6/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3.6/bin/pip3.7 /usr/bin/pip3

4、验证

python3 --version
pip3 --version

pip3 list 提示升级pip
在这里插入图片描述
python3 -m pip install --upgrade pip

二、安装binlog2sql

shell> git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
shell> pip install -r requirements.txt

再安装binlog2sql解析所需要的包
pip3 install mysql-replication-0.13.tar.gz
pip3 install PyMySQL-0.9.3.tar.gz
pip3 install wheel-0.34.2-py2.py3-none-any.whl
pip3 list
mysql数据恢复_第2张图片
所用到的包在这里

https://download.csdn.net/download/weixin_44090237/88618756?spm=1001.2014.3001.5503

三、MySQL操作
1、进入MySQL确认是否开启binlog日志

show variables like 'log%'

如未开启,修改/etc/my.cnf文件,添加如下参数

[mysqld]
server_id = 1
log_bin = mysql-bin
binlog_format = row

添加完重启MySQL服务
systemctl restart mysqld
2、创建并删除测试数据
create table user;
insert into user ;
delete from user;
3、查看当前binlog文件

show master status;

四、解析出标准SQL

python3 binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'123456' -dtest -t user --start-file='mysql-bin.000002'

在这里插入图片描述
五、解析出回滚SQL

根据时间解析

python3 binlog2sql.py --flashback -h127.0.0.1 -P3306 -uroot -p'123456' -dtest -t user --start-file='mysql-bin.000002' --start-datetime='2023-12-07 16:59:49' --stop-datetime='2023-12-11 11:17:20' > user.txt

在这里插入图片描述
六、还原sql

解析拿到的sql做处理
awk -F ‘;’ ‘{print $1 “;”}’ user .txt > user.txt
cat user.txt |grep “INSERT” > user.sql

最后回到MySQL
source user.sql

你可能感兴趣的:(mysql,数据库)