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

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

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

一、前提

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

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

1.1 查看位置

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

show variables like '%log_bin%'

二、簡單場景演示

2.1 背景

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

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

確認 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)建新文件

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

flush logs;

2.5 查看具體文件

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

show master logs;

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

2.6 查看具體的命令行

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

show binlog events in 'binlog.000017';

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

2.7 mysqlbinlog

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

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

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

三、復雜場景演示

先通過下面的命令查看下 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ù)復原

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)第一個有關于 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ù)庫被恢復成功了,不過現(xiàn)在只是個空庫,如下圖:

2、繼續(xù)向下搜尋有關 itcast 的 binlog 日志,如下圖,又在 binlog 里面發(fā)現(xià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ù)也都恢復回來了。

總結 

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

相關文章

  • MySQL提取Json內(nèi)部字段轉(zhuǎn)儲為數(shù)字

    MySQL提取Json內(nèi)部字段轉(zhuǎn)儲為數(shù)字

    本文主要介紹了MySQL提取Json內(nèi)部字段轉(zhuǎn)儲為數(shù)字,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • MySQL 觸發(fā)器定義與用法簡單實例

    MySQL 觸發(fā)器定義與用法簡單實例

    這篇文章主要介紹了MySQL 觸發(fā)器定義與用法,結合簡單實例形式總結分析了mysql觸發(fā)器的語法、原理、定義及使用方法,需要的朋友可以參考下
    2019-09-09
  • mysql 常用命令用法總結腳本之家整理版

    mysql 常用命令用法總結腳本之家整理版

    在日常工作中,會簡單的使用一下mysql,故對常見命令操作總結一下,常用方式如下
    2010-02-02
  • MySQL中查看表結構的四種實現(xiàn)

    MySQL中查看表結構的四種實現(xiàn)

    本文主要介紹了MySQL中查看表結構的四種實現(xiàn),包含DESCRIBE/DESC、SHOW COLUMNS、SHOW CREATE TABLE和INFORMATION_SCHEMA,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • 解決MySQL 5.7中定位DDL被阻塞的問題

    解決MySQL 5.7中定位DDL被阻塞的問題

    這篇文章主要介紹了MySQL 5.7中如何定位DDL被阻塞的問題,在MySQL 5.7中,針對MDL,引入了一張新表performance_schema.metadata_locks,該表可對外展示MDL的相關信息,包括其作用對象,類型及持有等待情況。對此問題感興趣的朋友參考下本文
    2018-08-08
  • mysql如何利用binlog進行數(shù)據(jù)恢復詳解

    mysql如何利用binlog進行數(shù)據(jù)恢復詳解

    MySQL的binlog日志是MySQL日志中非常重要的一種日志,下面這篇文章主要給大家介紹了關于mysql如何利用binlog進行數(shù)據(jù)恢復的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-10-10
  • 提高SQL代碼可讀性的10種技巧

    提高SQL代碼可讀性的10種技巧

    SQL,這門備受推崇的編程語言,在關系數(shù)據(jù)庫操作中扮演著不可或缺的角色,然而,伴隨著數(shù)據(jù)庫模式的不斷增長和不斷演進,編寫和維護SQL代碼可能會變得相當具有挑戰(zhàn)性,為了確保你的SQL代碼能夠具備高可讀性、易維護性以及出色的性能,以下是十個不容忽視的最佳實踐
    2023-10-10
  • MySQL數(shù)據(jù)庫中Interval關鍵字的使用看這一篇就夠了

    MySQL數(shù)據(jù)庫中Interval關鍵字的使用看這一篇就夠了

    這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫中Interval關鍵字使用的相關資料,interval作為一個關鍵字時,表示為時間間隔,常用在date_add()、date_sub()、subdate(),函數(shù)中,常用于時間的加減法,需要的朋友可以參考下
    2024-08-08
  • Mysql關聯(lián)查詢的幾種實現(xiàn)方式

    Mysql關聯(lián)查詢的幾種實現(xiàn)方式

    這篇文章主要介紹了Mysql關聯(lián)查詢的幾種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MySQL中or、in、union與索引優(yōu)化詳析

    MySQL中or、in、union與索引優(yōu)化詳析

    這篇文章主要給大家介紹了關于MySQL中or、in、union與索引優(yōu)化的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12

最新評論