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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL专题-使用Binlog日志恢复MySQL数据

發布時間:2025/3/20 数据库 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL专题-使用Binlog日志恢复MySQL数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家有沒有碰到過由于誤操作把測試數據庫的一張表給刪除了,導致測試的數據都被刪除了,然后手足無措,測試把你一定數落,頓時感覺自己要死了?今天就教你即使誤刪了也可以將刪除的數據恢復,以后誤刪再也不用驚嚇了。當然,實際操作中最好還是認真對待,小心操作。還有就是在大公司內,數據也不是你想刪就能刪掉的,有無數權限/備份阻攔著你,所以通常情況下你都不會有機會,但還是備著以防萬一。

Binlog簡述

MySql數據恢復主要依賴的是Binlog日志,在之前的文章中MYSQL專題-MySQL三大日志binlog、redo log和undo log也有講過,大家有興趣可以去看看,這里簡單介紹一下:

  • binlog是記錄所有數據庫表結構變更(例如CREATE、ALTER TABLE…)以及表數據修改(INSERT、UPDATE、DELETE…)的二進制日志;
  • binlog不會記錄SELECT和SHOW這類操作,因為這類操作對數據本身并沒有修改,但你可以通過查詢通用日志來查看MySQL執行過的所有語句。

通過Binlog日志,我們解決以下的問題:

  • 恢復數據:(今天要說的重點);
  • 數據庫復制:主從數據庫是通過將binlog傳給從庫,從庫有兩個線程,一個I/O線程,一個SQL線程,I/O線程讀取主庫傳過來的binlog內容并寫入到relay log,SQL線程從relay log里面讀取內容,寫入從庫的數據庫;
  • 審計:用戶可以通過二進制日志中的信息來進行審計,判斷是否有對數據庫進行注入攻擊。

所以說,想要能夠恢復數據,首先你得打開Mysql的binlog,在平常你自己安裝的單機Mysql中,默認情況下不會開啟。下面就一步步地實踐下如何開啟你服務器上的Binlog日志。

Binlog開啟(Windows示范)

首先進入數據庫控制臺,運行指令:

可以看到我們的binlog是開啟的(MySql8.0.21默認是開啟的狀態,8.0以后都是默認開啟,加了反而會報錯),如果你的是低版本的沒有開啟,輸入 net stop mysql停止MySql,修改mysql的配置文件my.ini。添加如下配置:

# Binary Logging. server_id=1(高版本,需要指定server-id,唯一就可以) log-bin=mysql-bin binlog-format=Row

輸入 net start mysql重啟mysql服務,然后再執行show variables like 'log_bin’就可以看到已經開啟了,執行 show binary logs,發現有對應的binlog日志:

當然你也可以到對應的Mysql安裝目錄的data中進行查看:

如果想關閉binlog日志,低版本的直接去掉就行,自動默認的加入skip-log-bin,然后重啟即可。需要說明的是,每當我們重啟MySQL一次,會自動生成一個binlog文件。我們也可以手動的來刷新binlog文件,通過 flush logs,同樣會新創建一個binlog文件。實際上當服務器在重啟時,也會調用flush logs操作。

Binlog實操

首先新建數據庫binLogTest,新建一張表tableLog1,SQL代碼如下:

CREATE DATABASE `binLogTest` ; USE `binLogTest`; DROP TABLE IF EXISTS `tableLog1`; CREATE TABLE `tableLog1` (`id` int(11) DEFAULT NULL,`name` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

然后插入兩條數據,分別是 (1,‘tom’),(2,‘jack’)

INSERT INTO `tableLog1` VALUES (1,'tom'),(2,'jack');

執行完成以后,我們再控制臺使用show master status看以下binlog日志的狀態:

可以看到,現在我們正在使用 binlog.0000004 ,并且這個文件現在正在記錄到1207行。
然后,使用flush logs來主動刷新一次binlog,然后再次查看狀態:

可以看到,現在日志文件在 binlog.000005 文件中,位置為156。也就是我們主動刷新了一次binlog,生成了新的binlog.000005,而binlog.000004則已經歸檔了,不會再寫入新的日志進去了。
接下來我們再插入兩條數據:

insert into 'tableLog1' values (3,'Lili'),(4,'Jim');

可以看到我們已經成功插入了4條數據:

我們再次flush logs,把binlog.000005日志存檔,開啟新的binlog.000006日志,這樣,每次我們插入的數據彼此獨立。實際情況下,binlog會比較復雜,這里也是做了簡化,為了理解更方便。

然后我們刪除id為4的數據,并且再次刷新binlog,如此一來,binlog.000006里面只有一條刪除操作:

我們來好好觀察下binlog.00005和binlog.00006兩個binlog,使用命令:show binlog events in 'binlog.000005’和show binlog events in ‘binlog.000006’:

一條插入操作的完整日志如上面標注所示。我們的目的是恢復誤刪的數據,其實就是將binlog.000005日志的插入記錄重演一遍,而不需要理會binlog.000006的操作(因為刪除是一個誤操作)。在實際的線上環境中,我們肯定需要將binlog導出后,仔細篩選出誤操作,并將其排除,之后再運行binlog,這里為了方便演示直接進行。我們只做一個恢復兩條插入語句的操作。
首先看到我們的數據庫中的確是不存在id為4的記錄。


然后我們執行以下語句:

mysqlbinlog --no-defaults binlog.000005 --start-position 156 --stop-position 470 | mysql -uroot -p binLogTest

需要說明的是,這里的語句執行不要在Mysql中執行,否則會報錯:

應該在binlog所在地方再開一個執行窗口執行:

執行完成以后我們在看一下數據:

看到的確是恢復了數據,為什么會有兩條id為3的數據,是因為我們執行的文件是插入id為3和4的binlog,大家可以依據自己數據的情況進行恢復,只要配置不同的起始位置即可:

--start-position:從二進制日志中讀取指定position 事件位置作為開始 --stop-position:從二進制日志中讀取指定position 事件位置作為事件截至

還有一點需要說明的,在最開始執行語句沒有加入–no-defaults,導致出錯:

大家加入即可。

看完binlog日志恢復數據的原理,希望大家以后在定期備份數據庫的腳本里,也能夠加上刷新binlog日志的命令,這樣一旦某天丟失數據,可以將當天binlog數據單獨拿出來還原,做到清晰可辨,也加快恢復效率。

猜你感興趣
MYSQL專題-絕對實用的MYSQL優化總結
MYSQL專題-MySQL事務實現原理
MYSQL專題-MVCC多版本并發控制
MYSQL專題-MySQL三大日志binlog、redo log和undo log

更多文章請點擊:更多…

總結

以上是生活随笔為你收集整理的MYSQL专题-使用Binlog日志恢复MySQL数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线欧美 | 成人av小说 | 成人激情站| 麻豆黄色网址 | 成人91av| 影音先锋色小姐 | 超碰人人人人人人人 | 91动态图 | 九九九九九伊人 | 欧美黑人疯狂性受xxxxx喷水 | 国产性xxx | 国产女人爽到高潮a毛片 | 91亚洲国产成人久久精品网站 | 夜夜爽av福利精品导航 | 尤物在线观看视频 | 仙踪林久久久久久久999 | 九九九免费视频 | 国内av网站 | 欧美 日本 国产 | 另类天堂 | 国内精品偷拍 | 国产suv精品一区二区69 | 国产高清一区二区三区 | 色哟哟网站入口 | 男女做那个的全过程 | 色图网址| 调教撅屁股啪调教打臀缝av | 天天插插插| 亚洲综合视频网 | 自偷自拍亚洲 | 国产福利资源 | xxxxx黄色| 欧美亚洲国产成人 | 免费三片在线播放 | 欧美午夜精品理论片a级按摩 | 亚洲精品视频在线观看视频 | 色婷婷婷| 国产suv精品一区二区四 | 日韩一区二区在线观看 | 丁香花高清在线观看完整动漫 | av在线一 | 成人精品福利视频 | 男女黄网站 | 日韩精品在线看 | 激情aaa| 综合av在线 | av精选 | 久久二区三区 | 国产青青操 | 国产美女91呻吟求 | 蜜桃久久一区二区三区 | a级片网址 | 91精品国产高清 | 国产另类在线 | 午夜精品久久久久久久96蜜桃 | 欧美三级免费观看 | 日韩高清中文字幕 | 夜夜高潮夜夜爽国产伦精品 | 欲色av | 久久com| 瑟瑟网站在线观看 | 欧美日韩视频一区二区 | 中国黄色网页 | 久艹伊人| 欧美不卡影院 | 国内黄色片 | 精品人妻一区二区三区麻豆91 | 欧美 日韩 国产一区 | 免费的黄色的网站 | 日韩视频网 | 婷婷五月精品中文字幕 | 成人午夜免费福利 | 日韩av福利 | 天堂√| 波多野结衣加勒比 | 亚洲天堂网在线观看 | 欧美一区久久 | 99爱视频| 一级黄色片在线看 | 6080黄色 | 黄色资源在线 | 亚洲一二区在线 | 亚洲综合精品视频 | 黄色av免费在线 | 亚洲一卡二卡三卡四卡 | 密臀av| 中文av在线播放 | 大奶一区二区 | 波多野结衣高清视频 | 日本 奴役 捆绑 受虐狂xxxx | 午夜视频免费看 | 91成人在线免费视频 | av在线影视| 久久久久久久久久综合 | 欧美丰满一区二区免费视频 | 欧美自拍亚洲 | jizz网站| 欧美波霸影院 | 国产超碰91 |