日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql+误操作怎么恢复_MySQL 误操作后如何快速恢复数据

發(fā)布時(shí)間:2023/12/4 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql+误操作怎么恢复_MySQL 误操作后如何快速恢复数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳統(tǒng)解法

用全量備份重搭實(shí)例,再利用增量binlog備份,恢復(fù)到誤操作之前的狀態(tài)。然后跳過誤操作的SQL,再繼續(xù)應(yīng)用binlog。此法費(fèi)時(shí)費(fèi)力,不值得再推薦。

利用binlog2sql快速閃回

首先,確認(rèn)你的MySQL server開啟了binlog,設(shè)置了以下參數(shù):

[mysqld]

server-id=1

log_bin=/var/log/mysql/mysql-bin.log

max_binlog_size=1000M

binlog-format=row

如果沒有開啟binlog,也沒有預(yù)先生成回滾SQL,那真的無法快速恢復(fù)數(shù)據(jù)了。對(duì)存放重要業(yè)務(wù)數(shù)據(jù)的MySQL,強(qiáng)烈建議開啟binlog。

隨后,安裝開源工具binlog2sql。binlog2sql是一款簡(jiǎn)單易用的binlog解析工具,其中一個(gè)功能就是利用binlog進(jìn)行閃回。

gitclonehttps://github.com/danfengcao/binlog2sql.git

pipinstall-rrequirements.txt

然后,我們就可以生成回滾SQL了。

背景:誤刪了test庫tbl表整張表的數(shù)據(jù),需要緊急回滾。

test庫tbl表原有數(shù)據(jù)

mysql>select*fromtbl;

+----+--------+---------------------+

|id|name|addtime|

+----+--------+---------------------+

|1|小趙|2016-12-1000:04:33|

|2|小錢|2016-12-1000:04:48|

|3|小孫|2016-12-1000:04:51|

|4|小李|2016-12-1000:04:56|

+----+--------+---------------------+

4rowsinset(0.00sec)

mysql>deletefromtbl;

QueryOK,4rowsaffected(0.00sec)

tbl表被清空

mysql>select*fromtbl;

Emptyset(0.00sec)

恢復(fù)數(shù)據(jù)步驟:

登錄mysql,查看目前的binlog文件

mysql>showmaster logs;

+------------------+-----------+

|Log_name|File_size|

+------------------+-----------+

|mysql-bin.000046|12262268|

|mysql-bin.000047|3583|

+------------------+-----------+

最新的binlog文件是mysql-bin.000047,我們?cè)俣ㄎ徽`操作SQL的binlog位置

$pythonbinlog2sql/binlog2sql.py-h127.0.0.1-P3306-uadmin-p'admin'-dtest-ttbl--start-file='mysql-bin.000047'

輸出:

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:33'AND`id`=1AND`name`='小趙'LIMIT1;#start 3346 end 3556

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:48'AND`id`=2AND`name`='小錢'LIMIT1;#start 3346 end 3556

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:51'AND`id`=3AND`name`='小孫'LIMIT1;#start 3346 end 3556

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:56'AND`id`=4AND`name`='小李'LIMIT1;#start 3346 end 3556

生成回滾sql,并檢查回滾sql是否正確

$pythonbinlog2sql/binlog2sql.py-h127.0.0.1-P3306-uadmin-p'admin'-dtest-ttbl--start-file='mysql-bin.000047'--start-pos=3346--end-pos=3556-B

輸出:

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:56',4,'小李');#start 3346 end 3556

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:51',3,'小孫');#start 3346 end 3556

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:48',2,'小錢');#start 3346 end 3556

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:33',1,'小趙');#start 3346 end 3556

確認(rèn)回滾sql正確,執(zhí)行回滾語句。登錄mysql確認(rèn),數(shù)據(jù)回滾成功。

$pythonbinlog2sql.py-h127.0.0.1-P3306-uadmin-p'admin'-dtest-ttbl--start-file='mysql-bin.000047'--start-pos=3346--end-pos=3556-B|mysql-h127.0.0.1-P3306-uadmin-p'admin'

mysql>select*fromtbl;

+----+--------+---------------------+

|id|name|addtime|

+----+--------+---------------------+

|1|小趙|2016-12-1000:04:33|

|2|小錢|2016-12-1000:04:48|

|3|小孫|2016-12-1000:04:51|

|4|小李|2016-12-1000:04:56|

+----+--------+---------------------+

軟件測(cè)試免費(fèi)視頻觀看鏈接:https://ke.qq.com/course/159919#tuin=ba4122

松勤網(wǎng):www.songqinnet.com

總結(jié)

以上是生活随笔為你收集整理的mysql+误操作怎么恢复_MySQL 误操作后如何快速恢复数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。