mysql使用binlog2sql恢复误删数据

文章目录

  • 前言
    • 一、binlog2sql简介
    • 二、安装binlog2sql
    • 三、数据恢复

前言

数据库误删除是个头疼的事情,因为数据恢复时,防止数据避免进入,业务系统需要停机。所以一定要做好备份。

一、binlog2sql简介

binlog2sql是一个用于将MySQL binlog转换成SQL语句的工具。它可以将MySQL binlog中的所有DDL和DML语句转换为易读的SQL语句,方便用户查看和分析。
通过使用binlog2sql,用户可以更好地管理MySQL数据库。例如,可以将binlog用作数据迁移、备份恢复、故障排除等方面的工具。

二、安装binlog2sql

在安装binglog2sql之前,先需要安装python和pymysql扩展,它是基于python环境的
根据文档说明目前在requiretxt的pymysql最高支持5.7的
所以对于8.0版本,需要升级下依赖包,不然程序会报pymysql连接不了数据库的错误。

  • 下载binlog2sql工具包
# 进入宿主目录,从git克隆binlog2sql
cd ~
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
  • mysql8.0的依赖包升级

根据官网的介绍,默认是不支持mysql8.0,需要修改binlog2sql目录中的requirements.txt文件

PyMySQL==0.9.3
wheel==0.29.0
mysql-replication==0.21
  • 添加国内的pip镜像:

我在下载过程中,pip提示包不存在的报错,速度也慢,所以改成阿里云镜像

单次修改

pip install -r requirements.txt  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

全局修改

在linux和macos,配置文件为:$HOME/.pip/pip.conf
在windows上,配置文件为:%HOME%\pip\pip.ini

[global]
timeout = 10
index-url = http://mirrors.aliyun.com/pypi/simple
[install]
trusted-host = mirrors.aliyun.com

安装

pip install -r requirements.txt  

mysql使用binlog2sql恢复误删数据_第1张图片

三、数据恢复

  • 需要在my.cnf中添加几个参数
[mysqld]
server_id = 1
log_bin = binlog
max_binlog_size = 1G
binlog_format = row
binlog_row_image = full
  • 执行的user的最小权限
select, super/replication client, replication slave

# 建议授权
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 
  • 找到binlog日志文件
    最近的一条binlog日志文件
show master status;

如果时间不是在当天的,只能在根据误删除的日期去定位了,因为每天binlog日志都有对应的日期

  • 执行命令
#进入binlog2sql.py的目录
cd ~/binlog2sql/binlog2sql

#执行
python binlog2sql.py -uroot -p'123456' -dtest -t t_dept_copy2 --start-file='binlog.000803'>~/t_dept_copy2.sql

执行成功后,会记录所有当前操作的SQL语句,我们可以把误删除的库的DELETE,DDL相关的语句去掉,然后重新执行下INSERT语句操作。
mysql使用binlog2sql恢复误删数据_第2张图片

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