当前位置:   article > 正文

MySQL误删数据找回神器之binlog2sql_binlog2sql.tar.gz

binlog2sql.tar.gz

一、使用前提

1. binlog_format为ROW,且binlog_row_image为full或noblog,默认为full。

2. 必须开启MySQL Server,理由有如下两点:

   ① 它是基于BINLOG_DUMP协议来获取binlog内容

   ② 需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句

3.需要一个数据库用户,授予最小权限如下:

mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO bin2sql_user IDENTIFIED BY 'your password';

注:

select:需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句

super/replication client:两个权限都可以,需要执行'SHOW MASTER STATUS', 获取server端的binlog列表

replication slave:通过BINLOG_DUMP协议获取binlog内容的权限

4.MySQL SERVER需要以下配置

  1. [mysqld]
  2. log_bin = /data/mysql/mysql-bin******.log
  3. binlog_format = row
  4. binlog_row_image = full --不配置默认就是full

5.依赖python

Python版本 2.7 或 3.4+

二、安装过程

1.上传binlog2sql.tar.gz到/usr/local/下并解压(所有包在最下面附件获取,目录按照个人喜好即可)

  1. [root@mysqlserver]# rz binlog2sql.tar.gz
  2. [root@mysqlserver]# tar –xf binlog2sql.tar.gz

2.安装如下依赖包

该工具的使用依赖以下三个包:

  1. PyMySQL==0.7.8
  2. wheel==0.24.0
  3. mysql-replication==0.9 

安装过程如下:

  1. [root@mysqlserver]# cd /usr/local/binlog2sql/binlog2sql_dependencies/
  2. [root@mysqlserver]# tar -xf setuptools-0.6c11.tar.gz
  3. [root@mysqlserver]# cd setuptools-0.6c11
  4. [root@mysqlserver]# python setup.py install
  5. [root@mysqlserver]# cd ..
  6. [root@mysqlserver]# tar xvf pip-9.0.1.tar.gz
  7. [root@mysqlserver]# cd pip-9.0.1
  8. [root@mysqlserver]# python setup.py install
  9. [root@mysqlserver]# cd ..
  10. [root@mysqlserver]# pip install *.whl mysql-replication-0.9.tar.gz

三、Binlog2sql的使用方法

1.binlog2sql参数说明

  1. --stop-never 持续同步binlog。可选。不加则同步至执行命令时最新的binlog位置。
  2. -K, --no-primary-key 对INSERT语句去除主键。可选。
  3. -B, --flashback 生成回滚语句,可解析大文件,不受内存限制,每打印一千行加一句SLEEP SELECT(1)。可选。与stop-never或no-primary-key不能同时添加。
  4. 解析范围控制
  5. --start-file 起始解析文件。必须。
  6. --start-position/--start-pos start-file的起始解析位置。可选。默认为start-file的起始位置。
  7. --stop-file/--end-file 末尾解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。
  8. --stop-position/--end-pos stop-file的末尾解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。
  9. --start-datetime 从哪个时间点的binlog开始解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
  10. --stop-datetime 到哪个时间点的binlog停止解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
  11. 对象过滤
  12. -d, --databases 只输出目标db的sql。可选。默认为空。
  13. -t, --tables 只输出目标tables的sql。可选。默认为空。
  14. 可以通过--help查看:python binlog2sql.py --help

2.MySQL参数说明

  1. -h host --主机
  2. -P port --端口
  3. -u user --数据库用户
  4. -p password --密码

3.使用举例

下面使用binlog2sql进行格式为ROW的binlog生成www库t6表的标准命令

[root@mysqlserver]# python /data/app/binlog2sql/binlog2sql.py -h localhost -u bin2sql_user -p 123456 -d www -t t6 --start-file mysql-bin.000187 --start-pos=24524030 --stop-pos=24524244  > roll.sql

现在对www这个库的所有操作生成反向SQL,这个时候需要在上面语句的基础上带一个-B参数,就是flashback闪回的意思

[root@mysqlserver]# python /data/app/binlog2sql/binlog2sql.py -h localhost -u bin2sql_user -p 123456 -d www -t t6 --start-file mysql-bin.000187 --start-pos=24524030 --stop-pos=24524244 -B > roll.sql

然后将roll.sql找出对应误删的数据,登陆数据库执行source即可

附件:百度网盘下载链接

提取码:hv91

***注意:当出现误update时,该工具有局限性,误update后数据不能再有变更,否则有极大可能失败导致数据有误***

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/955272
推荐阅读
相关标签
  

闽ICP备14008679号