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

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

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

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

先創(chuàng)建兩個測試表 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ù)。

模擬刪除

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

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

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ù)步驟

我們需要刪除的信息,并保留刪除之后修改過的信息

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

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

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

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

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

以下是 Windows CMD 的命令實例:

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"

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

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

以下是 Windows CMD 的命令實例:

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)報錯:

反饋 table_1表中已經(jīng)有了主鍵 1 ,不能插入。是因為我們只指定了數(shù)據(jù)恢復(fù)的結(jié)束位置,而當(dāng)前日志又包含了 table_1 的所有行插入記錄,當(dāng)恢復(fù)表時,他會重新插入這些行,導(dǎo)致和表內(nèi)已存在的信息主鍵沖突。

因為我的 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),但是我們在刪除之后還做了修改操作,我們還需要把修改操作也還原一下:

相當(dāng)于跳過 delete 操作,1100 位置即是我們修改操作的開始位置,直至 1478 整個操作結(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é)束后我們在查詢表內(nèi)信息 ,刪除的數(shù)據(jù)恢復(fù)了,而且我們修改過的記錄也在。

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

相關(guān)文章

  • Mysql基礎(chǔ)知識點匯總

    Mysql基礎(chǔ)知識點匯總

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

    MySQL刪除表時I/O錯誤的原因分析與解決

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

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

    本篇文章是對減少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表里,還有一個表mysql.column_type_elements比較特殊,用來存放SET和ENUM類型的字段集合值信息,對mysql dd::columns表結(jié)構(gòu)相關(guān)知識感興趣的朋友一起看看吧
    2022-09-09
  • 手把手教你Navicat如何導(dǎo)出Excel格式的表結(jié)構(gòu)

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

    我們在開發(fā)中使用數(shù)據(jù)庫時往往需要做一些備份之類的,或者需要導(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 是一個小巧的計算機(jī)基于 22 nm 的 Silvermont 雙核 Intel Atom CPU 主頻 500MHz運行 Linux (叫做 Yocto 的基于 Ubuntu 的發(fā)布版)。為了對 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實現(xiàn)if語句判斷功能的6種使用形式小結(jié)

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

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

    在Centos7中利用Shell腳本實現(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ù)制到其它的存儲介質(zhì)的過程,本文將給大家介紹了在Centos7中利用Shell腳本實現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2023-12-12

最新評論

巍山| 黄骅市| 沐川县| 合山市| 从化市| 武城县| 吉首市| 和平区| 酒泉市| 江油市| 敖汉旗| 宝山区| 泾川县| 隆昌县| 西宁市| 惠来县| 临武县| 抚顺市| 义马市| 淮南市| 白城市| 肇州县| 麟游县| 乃东县| 曲麻莱县| 故城县| 肥乡县| 革吉县| 克东县| 固始县| 德令哈市| 元朗区| 平泉县| 内乡县| 安远县| 海晏县| 周至县| 东安县| 华容县| 顺昌县| 抚顺市|