最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql 通過(guò)binlog日志恢復(fù)數(shù)據(jù)的實(shí)現(xiàn)示例

 更新時(shí)間:2026年03月24日 10:34:10   作者:伐塵  
本文主要介紹了Mysql 通過(guò)binlog日志恢復(fù)數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Binlog日志,即binary log,是二進(jìn)制日志文件,有兩個(gè)作用,一個(gè)是增量備份,另一個(gè)是主從復(fù)制,即主節(jié)點(diǎn)維護(hù)一個(gè)binlog日志文件,從節(jié)點(diǎn)從binlog中同步數(shù)據(jù),也可以通過(guò)binlog日志來(lái)恢復(fù)數(shù)據(jù)

登錄mysql查看binlog日志的狀態(tài),輸入show variables like ‘%log_bin%’;查看binlog為off關(guān)閉狀態(tài)

開(kāi)啟mysql binlog日志,進(jìn)入mysql配置文件(vi /etc/my.cnf) 在mysqld區(qū)域內(nèi)添加如下內(nèi)容,

①server-id = 1(單個(gè)節(jié)點(diǎn)id)
②log-bin= /var/lib/mysql/mysql-bin(位置一般和mysql庫(kù)文件所在位置一樣)
③expire_logs_days = 10(表示此日志保存時(shí)間為10天),重啟mysqld,再次查看binlog日志開(kāi)啟狀態(tài)為ON

Binlog日志包括兩類文件

  • 第一個(gè)是二進(jìn)制索引文件(后綴名為.index),
  • 第二個(gè)為日志文件(后綴名為.00000*),記錄數(shù)據(jù)庫(kù)所有的DDL和DML(除了查詢語(yǔ)句select)語(yǔ)句事件

查看所有binlog日志文件列表:show master logs;

查看最后一個(gè)binlog日志的編號(hào)名稱及其最后一個(gè)操作事件pos結(jié)束點(diǎn)的值:show master status;

Flush logs 刷新日志,此刻開(kāi)始產(chǎn)生一個(gè)新編號(hào)的binlog文件,例如:

每當(dāng)mysqld服務(wù)重啟時(shí),會(huì)自動(dòng)執(zhí)行刷新binlog日志命令,mysqldump備份數(shù)據(jù)時(shí)加-F選項(xiàng)也會(huì)刷新binlog日志

清空所有binlog日志命令:reset master;

查看binlog文件內(nèi)容,使用查看工具mysqlbinlog來(lái)查看(cat/vi/more都是無(wú)法打開(kāi)的)

上面的方法讀取內(nèi)容較多不易觀察,以下命令更為方便查看命令:show binlog events in ‘mysql-bin.000003’;

指定查詢,從pos點(diǎn)406開(kāi)始查詢,如下:

指定查詢,從pos點(diǎn)154開(kāi)始查詢,中間跳過(guò)2行,查詢4條數(shù)據(jù),如圖:

利用binlog日志恢復(fù)mysql數(shù)據(jù),例如,現(xiàn)有一張數(shù)據(jù)表如圖:此表位于hello數(shù)據(jù)庫(kù)

現(xiàn)在將此數(shù)據(jù)庫(kù)備份到本地(模擬每周的備份情況),備份命令如下

可以在數(shù)據(jù)備份之前或者之后執(zhí)行flush logs重新生成一個(gè)binlog日志用來(lái)記錄備份之后的所有增刪改操作(重新生成日志更好找pos點(diǎn)),由于業(yè)務(wù)需求,現(xiàn)在對(duì)表進(jìn)行插入

數(shù)據(jù),修改數(shù)據(jù),如圖新增了兩條數(shù)據(jù)id 為5和6,修改后數(shù)據(jù)如圖,

6的年齡修改成了30

由于操作失誤,誤刪除了數(shù)據(jù)庫(kù),所有數(shù)據(jù)都不見(jiàn)了,此時(shí)可以通過(guò)binlog日志恢復(fù)數(shù)據(jù),由于之前有做了數(shù)據(jù)庫(kù)備份,所以可以先將備份的數(shù)據(jù)導(dǎo)入進(jìn)去,剩下缺少的就是備份之后操作所產(chǎn)生的內(nèi)容(備份之后執(zhí)行了插入內(nèi)容以及更改內(nèi)容),先恢復(fù)備份的數(shù)據(jù):創(chuàng)建庫(kù)hello并選擇庫(kù)(use hello),通過(guò)命令source /root/hello.sql將數(shù)據(jù)庫(kù)內(nèi)容導(dǎo)入,然后執(zhí)行

恢復(fù)的內(nèi)容如下所示:

上面恢復(fù)的數(shù)據(jù)只是截止到備份時(shí)間的數(shù)據(jù),剩下缺少的數(shù)據(jù)可以通過(guò)binlog日志來(lái)恢復(fù),由于我們備份數(shù)據(jù)庫(kù)之前重新創(chuàng)建了mysql-bin.000006日志,所以備份后的所有操作都保存在這個(gè)日志中,可以先備份下這個(gè)日志文件,cp mysql-bin.000006 /root/ 接著執(zhí)行flush logs 刷新日志,重新創(chuàng)建了一個(gè)binlog日志7

重新創(chuàng)建一個(gè)日志7的目的:接下來(lái)所有操作的數(shù)據(jù)都會(huì)寫入到日志7中,日志6中不會(huì)在寫入任何數(shù)據(jù)(方便根據(jù)日志6的內(nèi)容恢復(fù)數(shù)據(jù),因?yàn)槿罩?的數(shù)據(jù)就是備份之后到刪庫(kù)之前的所有操作日志,重建日志7不會(huì)有過(guò)多的數(shù)據(jù)影響恢復(fù))

登錄mysql 查看日志6: show binlog events in ‘mysql-bin.000006’;結(jié)果如下:

查看日志發(fā)現(xiàn),在備份數(shù)據(jù)后首先執(zhí)行的是插入數(shù)據(jù)操作(在一個(gè)事務(wù)內(nèi)),此時(shí)可以通過(guò)指定pos結(jié)束點(diǎn)恢復(fù)(部分恢復(fù)),如圖,pos結(jié)束點(diǎn)位435(事務(wù)已提交表示結(jié)束),執(zhí)行命令如下,

/usr/bin/mysqlbinlog  --stop-position=435 --database=hello  /var/lib/mysql/mysql-bin.000006 | /usr/bin/mysql -uroot -p密碼 -v hello (其中整個(gè)命令的含義是通過(guò)mysqlbinlog讀取日志內(nèi)容并通過(guò)管道傳給mysql命令,-v表示執(zhí)行此mysql命令)

執(zhí)行后查詢表發(fā)現(xiàn)如下:

備份之后插入的數(shù)據(jù)都出現(xiàn)了,目前還差一次修改的數(shù)據(jù)沒(méi)有找回來(lái),接著看日志6如圖,

發(fā)現(xiàn)執(zhí)行更新操作的事務(wù)區(qū)間為573到718,所以可以執(zhí)行以下命令來(lái)恢復(fù)這段數(shù)據(jù),

/usr/bin/mysqlbinlog  --start-position=573 --stop-position=718 --database=hello  /var/lib/mysql/mysql-bin.000006 | /usr/bin/mysql -uroot -p密碼 -v hello注意其中的符號(hào)都是英文狀態(tài)下(只恢復(fù)這段事務(wù)區(qū)間的數(shù)據(jù)也就是更新的數(shù)據(jù))

恢復(fù)結(jié)果如下:

更改的數(shù)據(jù)回來(lái)了,也可以最開(kāi)始的時(shí)候直接通過(guò)最終的pos結(jié)束點(diǎn)718來(lái)恢復(fù)

還有一種通過(guò)時(shí)間來(lái)恢復(fù),還是先備份當(dāng)前數(shù)據(jù)庫(kù)(備份之前先f(wàn)lush logs創(chuàng)建一個(gè)新的binlog日志文件9),然后修改數(shù)據(jù)插入數(shù)據(jù)后如圖,

修改后將當(dāng)前數(shù)據(jù)庫(kù)刪除,(刪除庫(kù)之后再執(zhí)行一下flush logs創(chuàng)建一個(gè)新的日志文件,這樣新的操作都寫入到這個(gè)文件中,上個(gè)日志文件只用來(lái)恢復(fù)數(shù)據(jù),不會(huì)有其余數(shù)據(jù)混入)現(xiàn)在我們通過(guò)時(shí)間點(diǎn)來(lái)恢復(fù)從備份數(shù)據(jù)后到刪除數(shù)據(jù)庫(kù)這期間所有操作的數(shù)據(jù),首先通過(guò)mysqlbinlog來(lái)了查看日志文件9如圖所示,

執(zhí)行命令:

/usr/bin/mysqlbinlog --start-datetime="2018-04-27 20:57:55" --stop-datetime="2018-04-27 20:58:18" --database=hello /var/lib/mysql/mysql-bin.000009 | /usr/bin/mysql -uroot -p8856769abcd -v hello

更改的數(shù)據(jù)得到了恢復(fù)

執(zhí)行命令

/usr/bin/mysqlbinlog --start-datetime="2018-04-27 20:58:18" --stop-datetime="2018-04-27 20:58:35" --database=hello /var/lib/mysql/mysql-bin.000009 | /usr/bin/mysql -uroot -p8856769abcd -v hello

插入的數(shù)據(jù)得到了恢復(fù),如圖,

到此這篇關(guān)于Mysql 通過(guò)binlog日志恢復(fù)數(shù)據(jù)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Mysql binlog日志恢復(fù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mac下忘記mysql密碼重新設(shè)置密碼的圖文教程

    Mac下忘記mysql密碼重新設(shè)置密碼的圖文教程

    這篇文章主要介紹了Mac下忘記mysql密碼重新設(shè)置密碼的教程,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Mysql縱表轉(zhuǎn)換為橫表的方法及優(yōu)化教程

    Mysql縱表轉(zhuǎn)換為橫表的方法及優(yōu)化教程

    在應(yīng)用中為了從不同的視圖去分析數(shù)據(jù),會(huì)使用不同的方案去查詢數(shù)據(jù)庫(kù),橫表和縱表的相互轉(zhuǎn)換就是其中一個(gè)常見(jiàn)的情景,這篇文章主要給大家介紹了關(guān)于Mysql縱表轉(zhuǎn)換為橫表的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • mysql 8.0.19 安裝配置方法圖文教程

    mysql 8.0.19 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.19 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 一些mysql啟動(dòng)參數(shù)的說(shuō)明和優(yōu)化方法

    一些mysql啟動(dòng)參數(shù)的說(shuō)明和優(yōu)化方法

    要求MySQL能有的連接數(shù)量。當(dāng)主要MySQL線程在一個(gè)很短時(shí)間內(nèi)得到非常多的連接請(qǐng)求,這就起作用,然后主線程花些時(shí)間(盡管很短)檢查連接并且啟動(dòng)一個(gè)新線程。
    2011-04-04
  • Centos下Mysql安裝圖文教程

    Centos下Mysql安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了 Centos下Mysql安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • PHP mysqli 增強(qiáng) 批量執(zhí)行sql 語(yǔ)句的實(shí)現(xiàn)代碼

    PHP mysqli 增強(qiáng) 批量執(zhí)行sql 語(yǔ)句的實(shí)現(xiàn)代碼

    本篇文章介紹了,在PHP中 mysqli 增強(qiáng) 批量執(zhí)行sql 語(yǔ)句的實(shí)現(xiàn)代碼。需要的朋友參考下
    2013-05-05
  • mysql 5.7.25 壓縮版安裝配置方法圖文教程

    mysql 5.7.25 壓縮版安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.25 壓縮版安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • MySql超長(zhǎng)自動(dòng)截?cái)鄬?shí)例詳解

    MySql超長(zhǎng)自動(dòng)截?cái)鄬?shí)例詳解

    這篇文章主要介紹了MySql超長(zhǎng)自動(dòng)截?cái)鄬?shí)例詳解的相關(guān)資料,這里通過(guò)實(shí)例來(lái)說(shuō)明如何實(shí)現(xiàn)自動(dòng)截?cái)嗟墓δ?,需要的朋友可以參考?/div> 2017-07-07
  • 通過(guò)緩存+SQL修改優(yōu)雅地優(yōu)化慢查詢

    通過(guò)緩存+SQL修改優(yōu)雅地優(yōu)化慢查詢

    本文通過(guò)介紹緩存的基本原理和SQL語(yǔ)句的優(yōu)化手段,以及實(shí)際案例的分析,為讀者提供了一種簡(jiǎn)單而有效的優(yōu)化思路。讀者可以通過(guò)本文了解到如何在不修改程序代碼的情況下,通過(guò)巧妙地運(yùn)用緩存和SQL優(yōu)化技巧,提高程序的性能和響應(yīng)速度。
    2023-04-04
  • MySQL數(shù)據(jù)庫(kù)之表的約束圖文詳解

    MySQL數(shù)據(jù)庫(kù)之表的約束圖文詳解

    在數(shù)據(jù)庫(kù)設(shè)計(jì)中,表約束是保證數(shù)據(jù)完整性、一致性的重要手段,數(shù)據(jù)類型本身就是一種基本約束,限制了數(shù)據(jù)的范圍和格式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09

最新評(píng)論

云梦县| 赣州市| 嵊泗县| 遂昌县| 开鲁县| 樟树市| 濉溪县| 贵定县| 贞丰县| 手游| 绍兴县| 枣阳市| 渝北区| 西宁市| 当雄县| 东明县| 旌德县| 嘉鱼县| 岳普湖县| 南安市| 依兰县| 洛隆县| 乳源| 绥德县| 双城市| 舟山市| 从化市| 靖西县| 文安县| 宁德市| 读书| 寿阳县| 兴化市| 宝清县| 秀山| 五河县| 中山市| 会理县| 湖南省| 平罗县| 永寿县|