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

Mysql如何通過binlog日志恢復(fù)數(shù)據(jù)詳解

 更新時間:2022年02月07日 15:13:22   作者:晨哥L  
binlog日志用于記錄所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)的所有語句,下面這篇文章主要給大家介紹了關(guān)于Mysql如何通過binlog日志恢復(fù)數(shù)據(jù)的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下

前言

MySQL的binlog日志是MySQL日志中非常重要的一種日志,記錄了數(shù)據(jù)庫所有的DML操作。通過binlog日志我們可以進行數(shù)據(jù)庫的讀寫分離、數(shù)據(jù)增量備份以及服務(wù)器宕機時的數(shù)據(jù)恢復(fù)。

定期備份固然可以在服務(wù)器發(fā)生宕機的時候快速的恢復(fù)數(shù)據(jù),但傳統(tǒng)的全量備份不可能做到實時,所以在發(fā)生宕機的時候,也會損傷一部分數(shù)據(jù),如果這個時候開啟了binlog日志,那么可以通過binlog來對沒有做備份的這一階段損失的數(shù)據(jù)進行恢復(fù)

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

方法如下

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

2,開啟mysql binlog日志,進入mysql配置文件(vi /etc/my.cnf) 在mysqld區(qū)域內(nèi)添加如下內(nèi)容,①server-id = 1(單個節(jié)點id) ②log-bin= /var/lib/mysql/mysql-bin(位置一般和mysql庫文件所在位置一樣) ③expire_logs_days = 10(表示此日志保存時間為10天),重啟mysqld,再次查看binlog日志開啟狀態(tài)為ON

3,Binlog日志包括兩類文件;第一個是二進制索引文件(后綴名為.index),第二個為日志文件(后綴名為.00000*),記錄數(shù)據(jù)庫所有的DDL和DML(除了查詢語句select)語句事件

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

5,查看最后一個binlog日志的編號名稱及其最后一個操作事件pos結(jié)束點的值:show master status;

6,F(xiàn)lush logs 刷新日志,此刻開始產(chǎn)生一個新編號的binlog文件,例如:

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

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

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

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

10,指定查詢,從pos點406開始查詢,如下:

11,指定查詢,從pos點154開始查詢,中間跳過2行,查詢4條數(shù)據(jù),如圖:

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

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

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

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

6的年齡修改成了30

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

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

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

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

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

查看日志發(fā)現(xiàn),在備份數(shù)據(jù)后首先執(zhí)行的是插入數(shù)據(jù)操作(在一個事務(wù)內(nèi)),此時可以通過指定pos結(jié)束點恢復(fù)(部分恢復(fù)),如圖,pos結(jié)束點位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 (其中整個命令的含義是通過mysqlbinlog讀取日志內(nèi)容并通過管道傳給mysql命令,-v表示執(zhí)行此mysql命令)執(zhí)行后查詢表發(fā)現(xiàn)如下:

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

發(fā)現(xiàn)執(zhí)行更新操作的事務(wù)區(qū)間為573到718,所以可以執(zhí)行以下命令來恢復(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注意其中的符號都是英文狀態(tài)下(只恢復(fù)這段事務(wù)區(qū)間的數(shù)據(jù)也就是更新的數(shù)據(jù)),恢復(fù)結(jié)果如下:

更改的數(shù)據(jù)回來了,也可以最開始的時候直接通過最終的pos結(jié)束點718來恢復(fù)

18,還有一種通過時間來恢復(fù),還是先備份當前數(shù)據(jù)庫(備份之前先flush logs創(chuàng)建一個新的binlog日志文件9),然后修改數(shù)據(jù)插入數(shù)據(jù)后如圖,

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

19,執(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ù)

20,插入數(shù)據(jù)的日志時間如圖:

執(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ù),如圖,

總結(jié)

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

相關(guān)文章

  • 深入理解MySQL 鎖之從全局鎖到死鎖檢測的問題

    深入理解MySQL 鎖之從全局鎖到死鎖檢測的問題

    mysql的鎖并不是單一的概念,本文從三個維度對InnoDB鎖體系進行系統(tǒng)梳理,幫你在實戰(zhàn)和面試中建立清晰的知識框架,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • 在Mysql存儲過程中使用事務(wù)實例

    在Mysql存儲過程中使用事務(wù)實例

    這篇文章主要介紹了在Mysql存儲過程中使用事務(wù)實例,需要的朋友可以參考下
    2014-04-04
  • MySQL主從數(shù)據(jù)庫搭建的實現(xiàn)

    MySQL主從數(shù)據(jù)庫搭建的實現(xiàn)

    本文主要介紹了MySQL8.0主從復(fù)制搭建步驟,包括配置文件修改、復(fù)制用戶權(quán)限設(shè)置、主庫狀態(tài)查詢、SSL證書生成及數(shù)據(jù)同步,具有一定的參考價值,感興趣的可以了解一下
    2025-06-06
  • 設(shè)置和修改MySQL的root密碼的詳細教程

    設(shè)置和修改MySQL的root密碼的詳細教程

    在 MySQL 數(shù)據(jù)庫的使用過程中,設(shè)置和修改 root 用戶的密碼是一項基本且重要的操作,root 用戶擁有數(shù)據(jù)庫的最高權(quán)限,因此確保其密碼的安全性至關(guān)重要,本文將詳細介紹在不同操作系統(tǒng)環(huán)境下設(shè)置和修改 MySQL root 密碼的具體步驟,幫助你輕松掌握這一關(guān)鍵技能
    2025-05-05
  • 一文帶你學(xué)會Mysql表批量添加字段

    一文帶你學(xué)會Mysql表批量添加字段

    本文主要介紹了MySQL表如何批量添加字段的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-05-05
  • 小心陷阱!MySQL中處理Null時需注意兩點

    小心陷阱!MySQL中處理Null時需注意兩點

    這篇文章主要為大家介紹了MySQL中處理Null時需注意的兩點,很關(guān)鍵的兩點,大家千萬要小心
    2016-06-06
  • JSP連接MySQL數(shù)據(jù)庫詳細步驟

    JSP連接MySQL數(shù)據(jù)庫詳細步驟

    這篇文章主要介紹了JSP連接MySQL數(shù)據(jù)庫詳細步驟,文章內(nèi)容詳細全面,且通過實例進行講解,容易理解,需要的朋友可以參考下
    2023-01-01
  • MySQL 去除重復(fù)數(shù)據(jù)實例詳解

    MySQL 去除重復(fù)數(shù)據(jù)實例詳解

    這篇文章主要介紹了MySQL 去除重復(fù)數(shù)據(jù)實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 解決Navicat導(dǎo)入數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)sql報錯datetime(0)的問題

    解決Navicat導(dǎo)入數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)sql報錯datetime(0)的問題

    這篇文章主要介紹了解決Navicat導(dǎo)入數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)sql報錯datetime(0)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • MySQL如何支撐起億級流量

    MySQL如何支撐起億級流量

    當每天新增數(shù)據(jù)上億級的時候,單表數(shù)據(jù)量在百萬級別,數(shù)據(jù)庫服務(wù)器的高峰期寫入壓力、查詢壓力在都很高的時候,該如何讓MySQL順利支撐起來呢?本片文章將教給你詳細的方案
    2021-09-09

最新評論

嘉禾县| 阳泉市| 麻阳| 汉源县| 桂东县| 清流县| 曲麻莱县| 清水河县| 深圳市| 哈巴河县| 天台县| 吴川市| 西安市| 岳普湖县| 永定县| 宝兴县| 金华市| 黄石市| 神木县| 那坡县| 洪湖市| 奎屯市| 芒康县| 东兴市| 岳西县| 鸡西市| 日土县| 平昌县| 肥乡县| 徐闻县| 达州市| 徐汇区| 华坪县| 祁门县| 玉山县| 平安县| 通化县| 马关县| 关岭| 朝阳县| 松江区|