当前位置:   article > 正文

mysql binlog 闪回_mysqlbinlog闪回数据

tdsql通过闪回恢复数据,前提条件是binlog必须设置什么格式

MySQL利用binlog恢复误操作数据

在人工手动进行一些数据库写操作的时候(比方说数据订正),尤其是一些不可控的批量更新或删除,通常都建议备份后操作。不过不怕万一,就怕一万,有备无患总是好的。在线上或者测试环境误操作导致数据被删除或者更新后,想要恢复,一般有两种方法。

方法一、利用最近的全量备份+增量binlog备份,恢复到误操作之前的状态,但是随着数据量的增大,binlog的增多,恢复起来很费时。

方法二、如果binlog的格式为row,那么就可以将binlog解析出来生成反向的原始SQL

以下是利用方法二写的一个python脚本binlog_rollback.py,可利用此脚本生成反向的原始SQL。

说明:

0、前提是binlog的格式为row

1、要恢复的表操作前后表结构没有发生变更,否则脚本无法解析

2、只生成DML(insert/update/delete)的rollback语句

3、最终生成的SQL是逆序的,所以最新的DML会生成在输入文件的最前面,并且带上了时间戳和偏移点,方便查找目标

4、需要提供一个连接MySQL的只读用户,主要是为了获取表结构

5、如果binlog过大,建议带上时间范围,也可以指定只恢复某个库的SQL

6、SQL生成后,请务必在测试环境上测试恢复后再应用到线上

脚本代码

#!/bin/env python

# -*- coding:utf-8 -*-

import os,sys,re,getopt

impo

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

闽ICP备14008679号