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

MYSQL?Binlog恢復(fù)誤刪數(shù)據(jù)庫詳解

 更新時(shí)間:2022年11月18日 11:40:08   作者:Mingvvv  
MySQL一旦誤刪數(shù)據(jù)庫之后恢復(fù)數(shù)據(jù)很麻煩,這里記錄一下艱辛的恢復(fù)過程,這篇文章主要給大家介紹了關(guān)于如何利用MySQL的binlog恢復(fù)誤刪數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下

對(duì)表誤刪或執(zhí)行缺少條件的修改 SQL 導(dǎo)致修改了表內(nèi)其他數(shù)據(jù)時(shí),我們需要想辦法將數(shù)據(jù)恢復(fù)回來。

先創(chuàng)建兩個(gè)測(cè)試表 table_1

CREATE TABLE `table_1`  (
  `id` int(0) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

首先要確保開啟了BINLOG日志

-- 查看日志狀態(tài)
show variables like '%log_bin%';

之前沒有開啟 Binlog 日志的話下面的方法就不能繼續(xù)操作了,開啟日志的方法網(wǎng)上有很多,修改一下配置文件并重啟 MYSQL 服務(wù)。

模擬刪除

正常情況下,我們需要從線上正在使用的日志中查找信息,要考慮的因素會(huì)很多。

為了方便測(cè)試,這里重啟了一個(gè)新的日志,后面的所有操作都會(huì)記錄到新的日志文件中。

flush logs
-- 插入table1一些數(shù)據(jù)
insert into table_1(name) values  ('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('10')
-- 模擬刪除表信息table1
delete from table_1 where id >5;
--然后修改table1的內(nèi)容
update table_1 set name= Concat(name,'1') ;

修復(fù)步驟

我們需要?jiǎng)h除的信息,并保留刪除之后修改過的信息

-- 查看日志內(nèi)容
show master status;
show binlog events in 'binlog.000023';

從上面的查詢語句可以查詢 binlog.000023 中記錄的所有操作。

如圖,我們?cè)?993 的位置執(zhí)行了刪除表的操作,我們要把數(shù)據(jù)還原到這個(gè)位置之前

每一個(gè)事務(wù)從 Gtid 開始,Xid 結(jié)束。

有的時(shí)候,我們不確定這個(gè)位置在什么地方,但是我們有時(shí)間范圍,可以根據(jù)時(shí)間范圍縮小所有區(qū)間,這里需要用到 binlog 命令

以下是 Windows CMD 的命令實(shí)例:

mysqlbinlog.exe F:\Mysql\mysql-8.0.27-winx64\data\binlog.000021 --start-datetime="2022-11-17 13:00:00" --stop-datetime="2022-11-17 14:00:00"

控制臺(tái)打印出來的結(jié)果和SQL查詢出來的結(jié)果大致上是一樣的。

找到我們要還原的位置之后,執(zhí)行還原命令。

以下是 Windows CMD 的命令實(shí)例:

mysqlbinlog.exe F:\Mysql\mysql-8.0.27-winx64\data\binlog.000023 --stop-position=993 --database=dgcat | F:\Mysql\mysql-8.0.27-winx64\bin\mysql -uroot -p*****

執(zhí)行后發(fā)現(xiàn)報(bào)錯(cuò):

反饋 table_1表中已經(jīng)有了主鍵 1 ,不能插入。是因?yàn)槲覀冎恢付藬?shù)據(jù)恢復(fù)的結(jié)束位置,而當(dāng)前日志又包含了 table_1 的所有行插入記錄,當(dāng)恢復(fù)表時(shí),他會(huì)重新插入這些行,導(dǎo)致和表內(nèi)已存在的信息主鍵沖突。

因?yàn)槲业?binlog 日志記錄了 table_1 的所有操作記錄。所以這里我選擇將 table_1 清空,用日志恢復(fù)所有數(shù)據(jù)。

truncate table table_1

正常情況下,我們最好能確認(rèn)下來數(shù)據(jù)恢復(fù)的開始位置。

再次執(zhí)行恢復(fù)命令后,表內(nèi)信息如下:

現(xiàn)在已經(jīng)恢復(fù)了我們刪除之前的狀態(tài),但是我們?cè)趧h除之后還做了修改操作,我們還需要把修改操作也還原一下:

相當(dāng)于跳過 delete 操作,1100 位置即是我們修改操作的開始位置,直至 1478 整個(gè)操作結(jié)束。

mysqlbinlog.exe F:\Mysql\mysql-8.0.27-winx64\data\binlog.000023 --start-position=1100 --stop-position=1478 --database=dgcat | F:\Mysql\mysql-8.0.27-winx64\bin\mysql -uroot -pzdm3713261995!!!

執(zhí)行結(jié)束后我們?cè)诓樵儽韮?nèi)信息 ,刪除的數(shù)據(jù)恢復(fù)了,而且我們修改過的記錄也在。

到此這篇關(guān)于MYSQL Binlog恢復(fù)誤刪數(shù)據(jù)庫詳解的文章就介紹到這了,更多相關(guān)MYSQL Binlog恢復(fù)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql基礎(chǔ)知識(shí)點(diǎn)匯總

    Mysql基礎(chǔ)知識(shí)點(diǎn)匯總

    本文給大家匯總介紹了mysql的23個(gè)基礎(chǔ)的知識(shí)點(diǎn),這些都是學(xué)習(xí)mysql的必備知識(shí),小伙伴們可以參考下。
    2015-09-09
  • MySQL刪除表時(shí)I/O錯(cuò)誤的原因分析與解決

    MySQL刪除表時(shí)I/O錯(cuò)誤的原因分析與解決

    這篇文章主要給大家介紹了關(guān)于MySQL刪除表時(shí)I/O錯(cuò)誤的原因分析與解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 減少mysql主從數(shù)據(jù)同步延遲問題的詳解

    減少mysql主從數(shù)據(jù)同步延遲問題的詳解

    本篇文章是對(duì)減少mysql主從數(shù)據(jù)同步延遲的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中dd::columns表結(jié)構(gòu)轉(zhuǎn)table過程及應(yīng)用詳解

    MySQL中dd::columns表結(jié)構(gòu)轉(zhuǎn)table過程及應(yīng)用詳解

    MySQL的dd表是用來存放表結(jié)構(gòu)和各種建表信息的,客戶端建的表都存在mysql.table和mysql.columns表里,還有一個(gè)表mysql.column_type_elements比較特殊,用來存放SET和ENUM類型的字段集合值信息,對(duì)mysql dd::columns表結(jié)構(gòu)相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-09-09
  • 手把手教你Navicat如何導(dǎo)出Excel格式的表結(jié)構(gòu)

    手把手教你Navicat如何導(dǎo)出Excel格式的表結(jié)構(gòu)

    我們?cè)陂_發(fā)中使用數(shù)據(jù)庫時(shí)往往需要做一些備份之類的,或者需要導(dǎo)出下表結(jié)構(gòu)導(dǎo)入到其他數(shù)據(jù)庫等,下面這篇文章主要給大家介紹了關(guān)于Navicat如何導(dǎo)出Excel格式的表結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 帶你5分鐘讀懂MySQL字符集設(shè)置

    帶你5分鐘讀懂MySQL字符集設(shè)置

    本文詳細(xì)介紹了mysql字符集、字符序的概念與聯(lián)系,給大家分享了多種方式查看MYSQL支持的字符集。具體內(nèi)容詳情大家參考下本文
    2018-01-01
  • 如何配置全世界最小的 MySQL 服務(wù)器

    如何配置全世界最小的 MySQL 服務(wù)器

    Intel Edison 是一個(gè)小巧的計(jì)算機(jī)基于 22 nm 的 Silvermont 雙核 Intel Atom CPU 主頻 500MHz運(yùn)行 Linux (叫做 Yocto 的基于 Ubuntu 的發(fā)布版)。為了對(duì) Edison 進(jìn)行編程,我們需要一塊接口板??梢赃x擇的板子包括兼容Arduino的接口板 (包含了 SD 卡) 還有 Intel 接口板。
    2016-04-04
  • mysql通過frm和ibd文件恢復(fù)表_mysql5.7根據(jù).frm和.ibd文件恢復(fù)表結(jié)構(gòu)和數(shù)據(jù)

    mysql通過frm和ibd文件恢復(fù)表_mysql5.7根據(jù).frm和.ibd文件恢復(fù)表結(jié)構(gòu)和數(shù)據(jù)

    文章主要介紹了如何從.frm和.ibd文件恢復(fù)MySQL InnoDB表結(jié)構(gòu)和數(shù)據(jù),需要的朋友可以參考下
    2025-03-03
  • mysql實(shí)現(xiàn)if語句判斷功能的6種使用形式小結(jié)

    mysql實(shí)現(xiàn)if語句判斷功能的6種使用形式小結(jié)

    這篇文章主要給大家介紹了關(guān)于mysql實(shí)現(xiàn)if語句判斷功能的6種使用形式,MySQL的IF既可以作為表達(dá)式用,也可在存儲(chǔ)過程中作為流程控制語句使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份

    在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份

    備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)集合從應(yīng)用主機(jī)的硬盤或陣列復(fù)制到其它的存儲(chǔ)介質(zhì)的過程,本文將給大家介紹了在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

山西省| 航空| 清丰县| 河北区| 泽库县| 永仁县| 永福县| 南溪县| 同江市| 中西区| 广南县| 来安县| 永年县| 墨竹工卡县| 双柏县| 泰州市| 扶风县| 正镶白旗| 澜沧| 东乌珠穆沁旗| 达州市| 巴彦淖尔市| 泰安市| 茶陵县| 江川县| 都匀市| 雷波县| 吴堡县| 都昌县| 丹阳市| 清涧县| 临朐县| 东乌珠穆沁旗| 固镇县| 永州市| 济阳县| 绥芬河市| 上虞市| 吉林省| 肥城市| 广平县|