国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

瀏覽:9日期:2023-10-04 18:19:44
實驗環境:

MYSQL 5.7.22

開啟二進志日志

日志格式MIXED

實驗過程:

1、執行:FLUSH LOGS;

master-bin.000014 文件就是新生成的文件

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

刷新日志是為了實驗內容更直觀,更容易觀察到整個實驗過程的內容。

我看到網上許多文章有在用REST MASTER;而未說明此命令的嚴重性

這條命令會刪除所有日志文件,并將文件名和記錄點進行重置歸零,99%的情況下是用不到這條命令的

刪除日志可以用PURGE MASTER LOGS...這樣保險一點

2、新日志文件已經生成,先觀察一下內容,有幾個點需要了解

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

查看二進日日志文件命令:mysqlbinlog master-bin.000014

# at 4#180903 16:19:12 server id 1 end_log_pos 123 CRC32 0xe03659b3 Start: binlog v 4, server v 5.7.22-log created 180903 16:19:12

先看上邊兩個箭頭:

# at 4(事件開始點) #180903 16:19:12 (代表的是時間) server id 1(主備復制時需要為每個MYSQL數據庫指定唯一的SERVER ID,我的未配置,默認是1) end_log_pos 123(事件結束點)

再看下邊兩個箭頭:

# at 123(事件開始點,和上邊的事件結束點是對應的) end_log_pos 154(事件結束點) at 4 和 at 123之間的內容就是事件內容

3、模擬業務場景,建表,插入數據,最后將某個表刪除;為了真實,我建了兩個庫,同時向不同的庫寫入內容,最后將其中一個庫中的某個表刪除。

mysql> FLUSH LOGS;Query OK, 0 rows affected (0.01 sec)mysql> create database t1;Query OK, 1 row affected (0.03 sec)mysql> create database t2;Query OK, 1 row affected (0.00 sec)mysql> use t1;Database changedmysql> create table t1 (id int);Query OK, 0 rows affected (0.03 sec)mysql> use t2;Database changedmysql> create table t2 (id int);Query OK, 0 rows affected (0.03 sec)mysql> insert into t2 values (3);Query OK, 1 row affected (0.01 sec)mysql> insert into t2 values (4);Query OK, 1 row affected (0.01 sec)mysql> use t1;Database changedmysql> insert into t1 values (1);Query OK, 1 row affected (0.01 sec)mysql> insert into t1 values (2);Query OK, 1 row affected (0.01 sec)mysql> use t2;Database changedmysql> insert into t2 values(20);Query OK, 1 row affected (0.01 sec)mysql> use t1;Database changedmysql> insert into t1 values(10);Query OK, 1 row affected (0.01 sec)mysql> drop table t1;Query OK, 0 rows affected (0.02 sec)mysql> use t2;Database changedmysql> insert into t2 values(222);Query OK, 1 row affected (0.01 sec)mysql>

建立T1、T2庫,建立T1、T2表。

向T1插入數據:1、2、10

向T2插入數據:3、4、20、222

模擬場景,刪除T1表,T2庫T2表業務還在繼續運行

現在將要通過日志將T1表進行恢復。

首先要先找到那個刪除命令的日志點:

mysqlbinlog master-bin.000014|grep -5a 'DROP TABLE'

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

看到#AT 2439 (記下這個數字)

在這個事件點執行的DROP TABLE操作。

由于日志文件內不只有T1庫的日志,還有T2庫的日志,一會只取T1數據庫的日志

而且還只取2439日志點之前的日志,再進行重新應用

如果把2439的日志取的話,再應用時數據庫會重新建庫建表,插數據, 還會執行這條刪表語句。

mysqlbinlog -d t1 --stop-position=2439 master-bin.000014>test.sql(執行這條語句竟然報錯了)

WARNING: The option --database has been used. It may filter parts of transactions, but will include the GTIDs in any case. If you want to exclude or include transactions, you should use the options --exclude-gtids or --include-gtids, respectively, instead.暫時弄不清楚原因,百度了下修改成:

mysqlbinlog master-bin.000014 -d t1 --skip-gtids --stop-position=2439>test.sql

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

-d:參數是指定某個數據庫日志

命令意思是將master-bin.000014日志文件內的T1數據庫日志,事件點2439之前的日志,輸出到test.sql

# tail test.sql

看看文件最后幾行

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

登錄數據庫:

mysql> use t1;Database changedmysql> source test.sql

中間報錯了一次,因為里邊包含建庫T1語句。

再查看表內容

mysql利用mysqlbinlog命令恢復誤刪除數據的實現

這樣數據就回來了。

到此這篇關于mysql利用mysqlbinlog命令恢復誤刪除數據的實現的文章就介紹到這了,更多相關mysql mysqlbinlog恢復誤刪除內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 久久香蕉精品成人 | 亚洲一区二区三区在线视频 | 久久机热综合久久国产 | 成人精品区 | 欧美同性videos在线可播放 | 亚洲精品第一区二区在线 | 成人欧美网站 | 欧美国产综合视频 | 波多野结衣一区二区 三区 波多野结衣一区二区三区88 | 我们2018在线完整免费观看 | 久草在线国产视频 | 特级欧美视频aaaaaa | 亚洲区精选网址 | 作爱视频在线免费观看 | 久久久久久久久网站 | 精品特级一级毛片免费观看 | 欧美理论大片清免费观看 | 中国女人毛茸茸免费视频 | 中文字幕精品在线观看 | 美国一级毛片片aa免 | 美日韩一级 | 国产高清厕所盗摄视频 | 亚洲aⅴ男人的天堂在线观看 | 男女性关系视频免费观看软件 | 99精品视频99 | 香蕉tv亚洲专区在线观看 | 亚洲在线精品视频 | 九九色综合 | 国产精品亚洲精品一区二区三区 | 97国产在线视频 | 91精品国产综合久久欧美 | 一级一黄在线观看视频免费 | 国产玖玖视频 | 国产91成人| 欧美综合在线观看 | 91手机看片国产福利精品 | 国产91在线 | 亚洲 | 国产精品久久久久久福利漫画 | 欧美精品做人一级爱免费 | 日韩精品首页 | 中文字幕va一区二区三区 |