欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL通過日志恢復(fù)數(shù)據(jù)的操作步驟

 更新時(shí)間:2024年12月26日 09:42:28   作者:alvin_2005  
在MySQL中恢復(fù)誤刪除的數(shù)據(jù)是一個(gè)常見但復(fù)雜的問題,具體的方法取決于幾個(gè)因素,包括您是否有備份、使用的是哪種存儲(chǔ)引擎(如InnoDB或MyISAM)、以及您的數(shù)據(jù)庫(kù)配置等,本文給大家介紹了MySQL通過日志恢復(fù)數(shù)據(jù)的操作步驟,需要的朋友可以參考下

試驗(yàn)環(huán)境:Windows Server2012 r2、MySql-8.0.27-winx64。

1、先檢查MySQL有沒有開啟binlog日志

通過下面的SQL命令查看MySQL是否開啟日志以及日志文件的位置:

show variables like '%log_bin%'

執(zhí)行結(jié)果如下圖所示:

圖中,log_bin的值為“ON”表示MySQL開啟了binlog日志功能;log_bin_basename表示日志文件的位置及文件名。 如果log_bin的值為“OFF”,那么意味著我們無(wú)法通過日志恢復(fù)被刪除的數(shù)據(jù),下面的步驟也就不用繼續(xù)啦。

2、查找刪除操作對(duì)應(yīng)的日志文件

由上圖可以看出,日志文件放在MySQL安裝目錄的data目錄下,且文件名為binlog。通過windows資源管理器打開MySQL的data目錄,如下圖所示:

由圖中我們可以看到兩個(gè)名為binlog的文件,通過修改日期可以區(qū)分哪一個(gè)是我們要找的文件,這里假設(shè)我們的刪除操作包含在日志文件binlog.000025中。 

3、查看被刪除數(shù)據(jù)的日志位置

通過下面的SQL命令查看對(duì)應(yīng)的日志文件:

SHOW BINLOG EVENTS IN 'binlog.000025'

從查詢結(jié)果中找到刪除命令的開始位置(pos):

如上圖所示,Pos=598431915對(duì)應(yīng)了刪除命令,但數(shù)據(jù)庫(kù)執(zhí)行刪除操作時(shí),都是以事務(wù)的形式開始的,所以需要將開始位置設(shè)定為Pos=598431671。繼續(xù)向下查找,可以找到最后一條刪除命令的位置Pos=613559555。

4、導(dǎo)出刪除操作對(duì)應(yīng)的SQL數(shù)據(jù)

 打開windows命令行工具,將目錄切換到MySQL安裝目錄的bin目錄下,執(zhí)行下面的命令:

mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --start-position=598431671 --stop-position=613559555 --database=【你的數(shù)據(jù)庫(kù)名稱】 ..\data\binlog.000025 > restore.sql

命令執(zhí)行完成后,就會(huì)將被刪除的數(shù)據(jù)信息導(dǎo)出到名為“restore.sql”的文件中,打開該文件,就可以看到被刪除數(shù)據(jù)的具體信息,如下圖所示:

 顯然,這不是我們想要的。不要著急,文件中前面這一堆是日志的頭部信息,我們可以通過查找關(guān)鍵字“flags: STMT_END_F”的方式,直接定位到我們想要的數(shù)據(jù),如下圖所示:

現(xiàn)在我們看到了,文件中“### DELETE FROM”開始的代碼塊記錄了刪除的數(shù)據(jù),WHERE之后的每一行記錄了所刪除數(shù)據(jù)對(duì)應(yīng)字段(@k表示第k個(gè)字段)的值,我們就可以據(jù)此寫出對(duì)應(yīng)的INSERT語(yǔ)句來(lái)恢復(fù)數(shù)據(jù)。假設(shè)表名為table_deleted,則上圖中對(duì)應(yīng)的用于恢復(fù)數(shù)據(jù)的SQL語(yǔ)句就可以寫成:

INSERT INTO table_deleted VALUES(527182,15134443,0,0,'2024-12-18 11:19:18', NULL);

如果文件中記錄了多條刪除記錄,我們就需要逐一寫出對(duì)應(yīng)的INSERT語(yǔ)句。

5、執(zhí)行SQL,恢復(fù)被刪除的數(shù)據(jù)

執(zhí)行這些INSERT語(yǔ)句,就可以完成數(shù)據(jù)恢復(fù)了。 

以上就是MySQL通過日志恢復(fù)數(shù)據(jù)的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于MySQL日志恢復(fù)數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL通過函數(shù)存儲(chǔ)過程批量插入數(shù)據(jù)

    MySQL通過函數(shù)存儲(chǔ)過程批量插入數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于MySQL通過函數(shù)存儲(chǔ)過程批量插入數(shù)據(jù),以及MySQL通過函數(shù)批量插入數(shù)據(jù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • MySql判斷漢字、日期、數(shù)字的具體函數(shù)

    MySql判斷漢字、日期、數(shù)字的具體函數(shù)

    這篇文章主要大家詳細(xì)介紹了MySql判斷漢字、日期、數(shù)字的具體函數(shù),感興趣的小伙伴們可以參考一下
    2016-05-05
  • MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié)(推薦)

    MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié)(推薦)

    這篇文章主要介紹了MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • mysql學(xué)習(xí)筆記之基礎(chǔ)知識(shí)

    mysql學(xué)習(xí)筆記之基礎(chǔ)知識(shí)

    本文是MySQL學(xué)習(xí)筆記系列文章的第一篇,給大家簡(jiǎn)單講解下MySQL的一些檢查操作命令,希望大家能夠喜歡
    2017-02-02
  • centos7.4系統(tǒng)中yum源安裝mysql 5.6

    centos7.4系統(tǒng)中yum源安裝mysql 5.6

    本文給大家介紹的是如何在centos7.4系統(tǒng)中通過yum源安裝MySQL 5.6數(shù)據(jù)庫(kù),CentOS7默認(rèn)數(shù)據(jù)庫(kù)是mariadb, 但是 好多用的都是mysql ,但是CentOS7的yum源中默認(rèn)好像是沒有mysql的,今天我們就來(lái)看看具體如何操作
    2018-09-09
  • 將MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤和解決辦法

    將MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤和解決辦法

    原來(lái)自己用的是為了裝的, 所以在設(shè)置database usage(如下圖1)的時(shí)候按照discuz官方的建議,選的都是Non-Transactional Database Only(只支持MyISAM數(shù)據(jù)引擎的非事務(wù)數(shù)據(jù)庫(kù)),用MyISAM數(shù)據(jù)庫(kù),還沒涉及到需要InnoDB,因此打算直接不加載INNODB引擎。
    2011-09-09
  • Mysql8.0修改配置文件my.ini的坑及解決

    Mysql8.0修改配置文件my.ini的坑及解決

    使用記事本直接編輯my.ini文件保存后,可能會(huì)導(dǎo)致MySQL無(wú)法啟動(dòng),因?yàn)镸ySQL會(huì)以ANSI編碼讀取該文件,解決方法是使用Notepad++打開my.ini文件,選擇ANSI編碼保存
    2025-01-01
  • MySQL計(jì)算連續(xù)3天登陸的用戶

    MySQL計(jì)算連續(xù)3天登陸的用戶

    本文主要介紹了MySQL計(jì)算連續(xù)3天登陸的用戶,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • MySQL常見內(nèi)存不足啟動(dòng)失敗的完美解決方法

    MySQL常見內(nèi)存不足啟動(dòng)失敗的完美解決方法

    這篇文章主要介紹了MySQL常見內(nèi)存不足啟動(dòng)失敗的完美解決方法,需要的朋友可以參考下
    2018-03-03
  • mysql日期函數(shù)用法大全

    mysql日期函數(shù)用法大全

    日期函數(shù)在實(shí)際應(yīng)用中可以幫助你輕松處理和操作日期時(shí)間數(shù)據(jù),使得數(shù)據(jù)庫(kù)操作更為靈活和便捷,本文主要介紹了mysql日期函數(shù)用法大全,感興趣的可以了解一下
    2024-05-05

最新評(píng)論