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

Mysql恢復(fù)誤刪庫表數(shù)據(jù)完整場景演示

 更新時間:2024年07月10日 11:09:07   作者:快樂的小三菊  
在開發(fā)和在生產(chǎn)中總會出現(xiàn)各種各樣的失誤和意味,當(dāng)MySQL的數(shù)據(jù)或表被刪除后不要慌,下面這篇文章主要給大家介紹了關(guān)于Mysql恢復(fù)誤刪庫表數(shù)據(jù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、前提

1、如果你的數(shù)據(jù)庫有備份文件,自己還原即可。

2、如果沒有備份文件,那首先檢查下你的 binlog 是否開啟。如果未開啟,那你就不用往下看了。如果開啟了,可以往下看看。

1.1 查看位置

可以通過以下的命令查看是否開啟了 binlog 以及它的存儲路徑,mysql8.0 版本是默認(rèn)開啟的。

show variables like '%log_bin%'

二、簡單場景演示

2.1 背景

此時演示的數(shù)據(jù)庫版本是 Mysql 8.0。且創(chuàng)建表、插入數(shù)據(jù)和刪除表都是在一個 binlog 里面完成的。

2.2 創(chuàng)建數(shù)據(jù)庫

確認(rèn) binlog 是開啟狀態(tài)之后,創(chuàng)建測試數(shù)據(jù)庫,在測試數(shù)據(jù)庫中創(chuàng)建測試表,并寫入數(shù)據(jù),腳本如下:

create database if EXISTS itcast;

use itcast;

create table tb_user(
	id int(11) not null,
	name varchar(50) not null,
	sex varchar(1),
	primary key (id)
)engine=innodb default charset=utf8;

insert into tb_user(id,name,sex) values(1,'Tom','1');
insert into tb_user(id,name,sex) values(2,'Trigger','0');
insert into tb_user(id,name,sex) values(3,'Dawn','1');

2.3 刪除數(shù)據(jù)庫

執(zhí)行下面的語句將數(shù)據(jù)庫刪除掉。

drop DATABASE itcast;

2.4 創(chuàng)建新文件

當(dāng)需要恢復(fù)數(shù)據(jù)時,為了防止恢復(fù)數(shù)據(jù)后影響最新業(yè)務(wù),需要執(zhí)行下面的命令產(chǎn)生一個新的 binlog 文件,如下,此時舊的 binlog 文件不會再有寫入操作了。

flush logs;

2.5 查看具體文件

執(zhí)行下面的命令,看下系統(tǒng)有多少個 binlog 文件

show master logs;

由于我們執(zhí)行 flush logs 命令新生了一個文件,所以我們執(zhí)行的刪除的命令應(yīng)該在 binlog.000017 文件里面。

2.6 查看具體的命令行

 執(zhí)行下面的命令,查看具體操作的開始和結(jié)束的位置

show binlog events in 'binlog.000017';

得到數(shù)據(jù)恢復(fù)的起始位置為 125,結(jié)束位置為 1750

2.7 mysqlbinlog

接下來使用 mysqlbinlog 命令執(zhí)行 binlog 文件,恢復(fù)數(shù)據(jù),命令如下:

mysqlbinlog -v /var/lib/mysql/binlog.000017 --start-position=125 --stop-position=1750 | mysql -uroot -p1234

數(shù)據(jù)就被恢復(fù)成功了。

三、復(fù)雜場景演示

先通過下面的命令查看下 binlog 是否開啟,以及日志存儲的位置

show variables like '%log_bin%'

3.1 背景

        1、此時演示的數(shù)據(jù)庫版本是 Mysql 8.0。

        2、創(chuàng)建表、插入數(shù)據(jù)和刪除表不是在一個 binlog 里面完成的。

        3、binlog 里面存儲了不止一個數(shù)據(jù)庫的日志。

3.2 現(xiàn)狀

此時我們有一個庫,里面有三張表,如下,具體什么時候創(chuàng)建的,不記得了,現(xiàn)在我們把他刪除掉,看看能不能給還原回去。

3.3 刪除數(shù)據(jù)庫

執(zhí)行下面的語句將數(shù)據(jù)庫刪除掉。

drop DATABASE itcast;

3.4 數(shù)據(jù)復(fù)原

1、執(zhí)行 flush logs 命令,使其產(chǎn)生一個新的 binlog 文件

2、執(zhí)行下面的命令,看下系統(tǒng)有多少個 binlog 文件。

show master logs;

3、挨個遍歷,執(zhí)行下面的命令,挨個 binlog 日志去查看

show binlog events in 'DESKTOP-B0B82CP-bin.000001';
show binlog events in 'DESKTOP-B0B82CP-bin.000002';
show binlog events in 'DESKTOP-B0B82CP-bin.000003';
show binlog events in 'DESKTOP-B0B82CP-bin.000004';
show binlog events in 'DESKTOP-B0B82CP-bin.000005';
show binlog events in 'DESKTOP-B0B82CP-bin.000006';
show binlog events in 'DESKTOP-B0B82CP-bin.000007';

1、發(fā)現(xiàn)第一個有關(guān)于 itcast 的日志位置,如下

把涉及到的這幾個 binlog 日志都拷貝到另外的文件夾里面去,因為 MySQL Server 8.0 這個目錄識別不了,真坑爹。 

拷貝完成后,執(zhí)行下面的語句:

mysqlbinlog -v C:/1/DESKTOP-B0B82CP-bin.000003 --start-position=424 --stop-position=543 | mysql -uroot -p123456

執(zhí)行成功后,可以看到,數(shù)據(jù)庫被恢復(fù)成功了,不過現(xiàn)在只是個空庫,如下圖:

2、繼續(xù)向下搜尋有關(guān) itcast 的 binlog 日志,如下圖,又在 binlog 里面發(fā)現(xiàn)了有關(guān) itcast 的日志,

mysqlbinlog -v C:/1/DESKTOP-B0B82CP-bin.000005 --start-position=125 --stop-position=9655 | mysql -uroot -p123456

繼續(xù)找,繼續(xù)還原。 

mysqlbinlog -v C:/1/DESKTOP-B0B82CP-bin.000005 --start-position=11607 --stop-position=12344 | mysql -uroot -p123456

繼續(xù)找,繼續(xù)還原。

mysqlbinlog -v C:/1/DESKTOP-B0B82CP-bin.000005 --start-position=14152 --stop-position=14742 | mysql -uroot -p123456

到此為止,就都找全了,數(shù)據(jù)也都恢復(fù)回來了。

總結(jié) 

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

相關(guān)文章

  • 計算機管理服務(wù)中找不到mysql的服務(wù)的解決辦法

    計算機管理服務(wù)中找不到mysql的服務(wù)的解決辦法

    MySQL是一種流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),用于存儲和管理大量數(shù)據(jù),在計算機管理中,啟動MySQL服務(wù)是一項重要的任務(wù),因為它可以確保數(shù)據(jù)庫系統(tǒng)的順利運行,這篇文章主要給大家介紹了關(guān)于計算機管理服務(wù)中找不到mysql的服務(wù)的解決辦法,需要的朋友可以參考下
    2023-05-05
  • MySQL?根據(jù)多字段查詢重復(fù)數(shù)據(jù)的示例代碼

    MySQL?根據(jù)多字段查詢重復(fù)數(shù)據(jù)的示例代碼

    本文介紹了如何使用 MySQL 根據(jù)多個字段查詢重復(fù)數(shù)據(jù),我們介紹了如何根據(jù)多個字段查詢重復(fù)數(shù)據(jù),并提供了相應(yīng)的代碼示例,通過這些方法,我們可以快速準(zhǔn)確地找到和處理重復(fù)數(shù)據(jù),提高數(shù)據(jù)庫的數(shù)據(jù)質(zhì)量,需要的朋友可以參考下
    2023-11-11
  • mysql幻讀詳解實例以及解決辦法

    mysql幻讀詳解實例以及解決辦法

    MySQL中的幻讀只有在讀的時候才會發(fā)生,讀這里特指SELECT操作,下面這篇文章主要給大家介紹了關(guān)于mysql幻讀詳解實例以及解決辦法的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • MySQL安裝與配置:如何重置MySQL登錄密碼(windows環(huán)境)

    MySQL安裝與配置:如何重置MySQL登錄密碼(windows環(huán)境)

    這篇文章主要介紹了MySQL安裝與配置:如何重置MySQL登錄密碼(windows環(huán)境),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL定位CPU利用率過高的SQL方法

    MySQL定位CPU利用率過高的SQL方法

    當(dāng)mysql CPU告警利用率過高的時候,我們應(yīng)該怎么定位是哪些SQL導(dǎo)致的呢,本文將介紹一下定位的方法,文章通過代碼示例講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-07-07
  • MySQL?Test?Run?測試框架詳細(xì)介紹?

    MySQL?Test?Run?測試框架詳細(xì)介紹?

    這篇文章主要介紹了MySQL?Test?Run?測試框架,主要通過include、suite展開MySQL?Test?Run?測試框架相關(guān)內(nèi)容,文章介紹詳細(xì),需要的小伙伴可以參考一下
    2022-02-02
  • MySQL使用命令行備份數(shù)據(jù)的方法詳解

    MySQL使用命令行備份數(shù)據(jù)的方法詳解

    由于長期使用測試環(huán)境的數(shù)據(jù)庫,時不時會有臟數(shù)據(jù)刪除不干凈,對此很需要一個實時將生產(chǎn)庫的數(shù)據(jù)定期備份一份,防止生產(chǎn)庫中會有臟數(shù)據(jù)進(jìn)來,所以本文給大家介紹了MySQL使用命令行備份數(shù)據(jù)的方法,需要的朋友可以參考下
    2024-02-02
  • MySQL中使用SQL語句查看某個表的編碼方法

    MySQL中使用SQL語句查看某個表的編碼方法

    下面小編就為大家?guī)硪黄狹ySQL中使用SQL語句查看某個表的編碼方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • ubuntu server配置mysql并實現(xiàn)遠(yuǎn)程連接的操作方法

    ubuntu server配置mysql并實現(xiàn)遠(yuǎn)程連接的操作方法

    下面小編就為大家分享一篇ubuntu server配置mysql并實現(xiàn)遠(yuǎn)程連接的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • MySQL?EXPLAIN執(zhí)行計劃解析

    MySQL?EXPLAIN執(zhí)行計劃解析

    本文主要介紹了MySQL?EXPLAIN執(zhí)行計劃解析,通過MySQL?EXPLAIN執(zhí)行計劃的各個字段的含義以及使用方式。感興趣的小伙伴可以參考一下
    2022-08-08

最新評論