mysqlbinlog闪回数据.doc

上传人:白大夫 文档编号:3263311 上传时间:2019-08-06 格式:DOC 页数:4 大小:23KB
返回 下载 相关 举报
mysqlbinlog闪回数据.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《mysqlbinlog闪回数据.doc》由会员分享,可在线阅读,更多相关《mysqlbinlog闪回数据.doc(4页珍藏版)》请在三一文库上搜索。

1、mysqlbinlog闪回数据MySQL利用binlog恢复误操作数据在人工手动进行一些数据库写操作的时候(比方说数据订正),尤其是一些不可控的批量更新或删除,通常都建议备份后操作。不过不怕万一,就怕一万,有备无患总是好的。在线上或者测试环境误操作导致数据被删除或者更新后,想要恢复,一般有两种方法。方法一、利用最近的全量备份+增量binlog备份,恢复到误操作之前的状态,但是随着数据量的增大,binlog的增多,恢复起来很费时。方法二、如果binlog的格式为row,那么就可以将binlog解析出来生成反向的原始SQL以下是利用方法二写的一个python脚本binlog_rollback.py

2、,可利用此脚本生成反向的原始SQL。说明:0、前提是binlog的格式为row1、要恢复的表操作前后表结构没有发生变更,否则脚本无法解析2、只生成DML(insert/update/delete)的rollback语句3、最终生成的SQL是逆序的,所以最新的DML会生成在输入文件的最前面,并且带上了时间戳和偏移点,方便查找目标4、需要提供一个连接MySQL的只读用户,主要是为了获取表结构5、如果binlog过大,建议带上时间范围,也可以指定只恢复某个库的SQL6、SQL生成后,请务必在测试环境上测试恢复后再应用到线上脚本代码#!/bin/env python# -*- coding:utf-8

3、 -*-import os,sys,re,getoptimport MySQLdbhost = 127.0.0.1user = password = port = 3306start_dateTIme = 1971-01-01 00:00:00stop_dateTIme = 2037-01-01 00:00:00start_posiTIon = 4stop_posiTIon = 18446744073709551615database = mysqlbinlog_bin = mysqlbinlog -vbinlog = fileContent = output=rollback.sqlonly

4、_primary = 0# -# 功能:获取参数,生成相应的binlog解析文件# -def getopts_parse_binlog():global hostglobal userglobal passwordglobal portglobal fileContentglobal outputglobal binlogglobal start_datetimeglobal stop_datetimeglobal start_positionglobal stop_positionglobal databaseglobal only_primarytry:options, args = ge

5、topt.getopt(sys.argv1:, f:o:h:u:p:P:d:, help,binlog=,output=,host=,user=,password=,port=,start-datetime=, stop-datetime=,start-position=,stop-position=,database=,only-primary=)except getopt.GetoptError:print 参数输入有误!options = if options = or options00 in (-help):usage()sys.exit()print 正在获取参数。.。.for n

6、ame, value in options:if name = -f or name = -binlog:binlog = valueif name = -o or name = -output:output = valueif name = -h or name = -host:host = valueif name = -u or name = -user:user = valueif name = -p or name = -password:password = valueif name = -P or name = -port:port = valueif name = -start

7、-datetime:start_datetime = valueif name = -stop-datetime:stop_datetime = valueif name = -start-position:start_position = valueif name = -stop-position:stop_position = valueif name = -d or name = -database:database = valueif name = -only-primary :only_primary = valueif binlog = :print 错误:请指定binlog文件名!usage()if user = :print 错误:请指定用户名!usage()if password = :print 错误:请指定密码!usage()if database :condition_database = -database= + + database + else:condition_data标签:内容

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1