2020-12-24

删库不必跑路,自己动手MySQL数据恢复,真香~~

背景

  今天项目上需要对MySQL进行数据修复,通过比较各种方案和工具,准备使用binlog2sql工具进行“数据闪回”,具体怎么使用呢,安排。

MySQL数据库准备

以恢复某个库的某个表为例,

准备两个一模一样地MySQL,安装上,推荐用yum+rpm方式安装,否则,配置起来能否一次性安装成功,看运气了。

源库:MySQL 5.7.30

目标库:MySQL 5.7.30

源库开启binlog

修改my.cnf配置文件,添加以下内容:

server_id=1# 标识,集群时必须且不能重复

log_bin = mysql-bin #必须开启

binlog_format = ROW#必须

expire_logs_days =0#日志保存天数,按需,0代表永久


安装过程

安装PIP

binlog2sql需要Python运行环境,首先安装pip。

pip 是一个 Python 包安装与管理工具,查看本机是否安装了pip,命令如下:

pip -V

 如果没有安装,执行一下命令下载安装,下载前请确保你的服务器能够访问公网权限(貌似是废话,但或许你申请的设备默认是不开的)

wget https://bootstrap.pypa.io/get-pip.py

  python get-pip.py

 再次查看命令

pip -V

看到如下内容,代表安装成功了


 安装Git

通过yum进行安装,命令如下:

yum -y install git

安装binlog2sql

下载binlog2sql,执行以下命令:

git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql

下载成功后,会在你当前下载的目录下生成一个binlog2sql目录,在当前目录下执行下面的命令:

pip install -r requirements.txt

安装过程中看到方块乱码别慌,最后出现success,代表ok了



至此,binglog2sql工具安装就绪。

使用过程

 源库

 查看当前的binlog主文件,命令如下:



 可以看到,源库当前正在写入的主log是mysql-bin.000003,将该文件通过SSH等方式,拷贝到目标库任意目录,备用。

目标库

同样执行show master status\G;命令,查看目标库当前binlog主文件,如果文件序号小于源库的序号,例如,目标库目前是mysql-bin.000002,则手工刷出一个或若干个binlog文件,直至可以覆盖源库的binlog序号(文件名)。


数据恢复

至此,菜都备齐了,开炒

进入你的binlog2sql的主目录下的binlog2sql目录,执行以下命令:

python binlog2sql.py -h127.0.0.1-P你的数据库端口 -u数据库用户 -p'数据库密码'--flashback  -d'数据库名称'-t'表名  --start-file='mysql-bin.000003' --start-datetime='开始时间' --stop-datetime='结束时间'  > flashback-test(名字随便起).sql

命令执行后,就是等待,时间视你的过滤条件多少,binlog文件数据大小,时间区间大小等条件制约,根据你服务器资源情况设置过滤条件。如果数据量过大,可能等不出结果。

没有消息就是好消息,如果经过一段时间的等待,最后成功地看到命令提示符,且生成的文件大小 > 0,恭喜,成功了!

这个SQL文件,就是针对指定时间区间(如果你输入了)等过滤条件内的执行的SQL的反向SQL,在目标表中执行一下,数据就回到你期望的时间点了。


安装遇到的问题及解决

问题一 Python脚本连接Mysql出错

pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ... ...

这个在网上有很多文章都是提示你输入格式有问题,如果你不属于这种情况,那么以下的办法会终极解决

你的MySQL使用的caching_sha2_password认证方式,换成mysql_native_password就可以了,具体操作如下:

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容