电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

数据备份与恢复--MySQL--flashback工具

来源:金蝶云社区作者:金蝶2024-09-238

数据备份与恢复--MySQL--flashback工具


在系统的日常使用和维护过程中,运维、DBA(数据库管理员)或开发人员有时会误删或者误更新数据,且系统bug有时也会引发该问题。如果是线上环境且误操作带来的影响较大时,需要系统提供快速恢复数据的能力。


传统的恢复数据方法是利用备份和binlog恢复,但这些方法费时费力,且无法快速准确地恢复数据。


今天小编给大家介绍2款MySQL数据恢复闪回(flashback)工具:binlog2sql闪回工具和MyFlash闪回工具,利用binlog直接进行回滚,能够在无需停机的基础上快速恢复用户误操作的delete和update数据。




1 binlog2sql闪回工具

1.1 前置条件


  • 开启binlog,binlog格式必须为ROW,且binlog_row_image必须为full。

    注:binlog是MySQL数据库的二进制日志,记录了数据库的修改操作。

  • 适用于MySQL5.6、5.7版本,在MySQL8.0版本下使用有bug,如字段顺序和字段值对应关系存在问题。


1.2 部署安装

以下都是源码安装,属于离线安装。如果机器可以连接外网,安装步骤更简单,可以自行网上搜索相应的安装方式。


  • 安装setup-tools


下载地址:

https://pypi.org/project/setuptools/#history


需要安装的恢复工具的依赖包如下:


unzip setuptools-36.5.0.zip
cd setuptools-36.5.0
python setup.py install


  • 安装pip


下载地址:

https://pypi.org/project/pip/#history


需要安装的恢复工具的依赖包如下:


tar -zxvf pip-9.0.1.tar.gz
cd pip-9.0.1
python setup.py install


  • 通过pip安装PyMySQL和mysql-replication


pip install PyMySQL-0.9.3.tar.gz
pip install mysql-replication-0.21.tar.gz


  • 安装binlog2sql


下载地址:

https://github.com/danfengcao/binlog2sql


解压binlog2sql后直接使用:


unzip binlog2sql-master.zip
cd binlog2sql-master/binlog2sql/


若输入python binlog2sql.py --help后能够正确输出帮助信息,则表示安装成功。


1.3 案例应用


  • 模拟误删表中的部分数据


1. 创建测试原始表。


create table test1(id int,name varchar(10),addtime datetime default now());
insert into test1 values(1,'赵',now()),(2,'钱',now()),(3,'孙','2022-01-12 12:12:12'),(4,'李','2022-12-12 1:00:00');
mysql> select * from test1;
+------+------+---------------------+
| id   | name | addtime             |
+------+------+---------------------+
|    1 | 赵  | 2021-07-16 09:21:55 |
|    2 | 钱  | 2021-07-16 09:21:55 |
|    3 | 孙  | 2022-01-12 12:12:12 |
|    4 | 李  | 2022-12-12 01:00:00 |
+------+------+---------------------+


2. 删除id>2的数据。


mysql> delete from test1 where id>2;
Query OK, 2 rows affected (0.03 sec)
mysql> select * from test1
;
+------+------+---------------------+
| id   | name | addtime             |
+------+------+---------------------+
|    1 | 赵  | 2021-07-16 09:21:55 |
|    2 | 钱  | 2021-07-16 09:21:55 |
+------+------+---------------------+


  • 恢复误删数据的具体步骤


1. 查看binlog日志,根据删除的时间确定binlog文件。



2. 从binlog文件中解析出误操作的语句。


python /soft/binlog2sql-tool/binlog2sql-master/binlog2sql/binlog2sql.py -h192.168.63.60 -P3306 
-uadmin -pxxx -dzhanghao -ttest1 --start-file='binlog.000472' --only-dml


运行结果如下:



从这里我们可以看到10:08:51时执行了2条delete语句,对应原始的sql语句是delete from test1 where id>2。


3. 生成闪回SQL语句。


python /soft/binlog2sql-tool/binlog2sql-master/binlog2sql/binlog2sql.py -h192.168.63.60 -P3306 
-uadmin -pxxx -dzhanghao -ttest1 --start-file='binlog.000472' -B --only-dml


添加-B, --flashback生成闪回SQL语句,确定反向SQL是否有问题,通过行数、时间点等信息确认数据是否正确。



4. 生成回滚SQL文件。


python /soft/binlog2sql-tool/binlog2sql-master/bi

数据备份与恢复--MySQL--flashback工具

在系统的日常使用和维护过程中,运维、DBA(数据库管理员)或开发人员有时会误删或者误更新数据,且系统bug有时也会引发该问题。如果是线上...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信