Mysql数据恢复---闪回恢复

      使用过商业数据库oracle都知道,oracle有一个闪回功能非常好用,可以非常迅速的找回删除的数据或者删除的表,这个功能在线上要谨慎使用,除非是万般无奈之下才去使用,在转向使用mysql时发现,官方根本没有提供闪回功能,如果要找回删除或者更新的数据,就只能使用备份恢复的方式了,如果DB容量特别大,例如:1TB,那恢复时间将会持续7个小时左右,具体需要看机器性能和网络带宽,如果有类似oracle闪回功能可以将时间缩减到半小时,甚至更短,大大减少工作量。

      阿里大神彭立勋在mysql5.5的时候,自己用python实现了mysql数据库闪回功能,工具名称是mysqlbinlog_flashback,github访问地址


https://github.com/58daojia-dba/mysqlbinlog_flashback

      

      曹单锋也实现了mysql数据库闪回功能,工具名称是binlog2sql,github访问地址

https://github.com/danfengcao/binlog2sql


      在使用以上2个工具之前,你所在的Mysql数据库的主从复制必须是row模式,并且binlog_row_image参数设置为full,设置为full原因是,工具在解析binlog日志时,要生成恢复sql,必须知道行记录修改前的值以及修改之后的值。

      下面先介绍一下mysqlbinlog_flashback,从github上下载之后,需要python2.6,并且需要安装依赖模块pymysql,这个模块主要用户连接mysql数据库,pymysql的github访问地址

https://github.com/PyMySQL/PyMySQL/

安装方法:压缩包解压之后,进入到安装目录,执行以下命令就可以正常安装

python setup.py build

python setup.py install


这个工具可以指定一个或者多个表进行闪回,语法如下所示

python mysqlbinlog_back.py --host="10.10.67.188" --username="tony" --port=3306 --password="tony" --schema=test --table="t_test"

Mysql数据恢复---闪回恢复_第1张图片

恢复语句存放在log目录下

Mysql数据恢复---闪回恢复_第2张图片

只要执行恢复数据的sql文件,即可完成数据恢复工作

mysql ... --default-character-set=utf8mb4 test < flashback_test_20170309_174737.sql

如果要使用更多高级功能,或者使用更精确的恢复,可以使用看系统帮助,命令如下所示

python mysqlbinlog_back.py --help


     再介绍一下binlog2sql工具,这个工具从github下载之后,需要python2.6或者2.7,并且需要安装依赖模块pymysql,python-mysql-replication,argparse,pymysql模块的安装上面已经介绍,这里就不再说明,python-mysql-replication可以从github上下载,下载地址

https://github.com/noplay/python-mysql-replication

安装方法:压缩包解压之后,进入到安装目录,执行以下命令就可以正常安装

python setup.py build

python setup.py install

argparse模块需要从https://pypi.python.org/pypi/argparse上下载安装包,安装方法如上所示

上述模块安装完毕之后,就可以正常使用binlog2sql工具

这个工具可以指定一个或者多个表进行闪回,语法如下所示

python binlog2sql.py -h127.0.0.1 -P3306 -utony -p'tony' -dtest -t t_test --start-file='mysql-bin.000004'


Mysql数据恢复---闪回恢复_第3张图片

如果要使用更多高级功能,或者使用更精确的恢复,可以使用看系统帮助,命令如下所示

python binlog2sql.py --help

下面是我的公众号二维码,欢迎添加


Mysql数据恢复---闪回恢复_第4张图片

你可能感兴趣的:(mysql)