MySQL資料庫被刪除如何恢復

2021-10-20 19:35:20 字數 2428 閱讀 2151

第一步:保證mysql已經開啟binlog,檢視命令:

檢視binklog是否開啟

show variables like '%log_bin%';
檢視binlog存放日誌檔案目錄(如下圖,博主binlog目錄為/data/mysql):

show variables like '%datadir%';
值為off,需開啟,值為on,已開啟。

如果沒有開啟binlog,也沒有預先生成回滾sql,那可能真的無法快速回滾了。對存放重要業務資料的mysql,強烈建議開啟binlog。

第二步:進入binlog檔案目錄,找出日誌檔案

第三步:切換到mysqlbinlog目錄(當線上資料出現錯誤的時候首先可以詢問具體操作人記錄時間點,這個時候可以借助mysql自帶的binlog解析工具mysqlbinlog,具體位置在mysql安裝目錄**/mysql/bin/下)

第四步:通過mysqlbinlog工具命令檢視資料庫增刪改查記錄(必須切換到mysqlbinlog目錄才有效)

例子1:查詢2018-11-12 09:00:00到2018-11-13 20:00:00 資料庫為 youxi 的操作日誌,輸入如下命令將資料寫入到乙個備用的txt檔案中

mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015    > template_coupon_tb_product_category.txt
例子2:查詢2018-11-12 09:00:00到2018-11-13 20:00:00 資料庫為 youxi 的操作日誌,並輸出到螢幕上

mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015   |more
例子3:查詢2018-11-12 09:00:00到2018-11-13 20:00:00 資料庫為 youxi 的操作日誌,並且過濾出 只包括 template_coupon_tb_product_category 表資料的操作記錄 ,輸入如下命令將資料寫入到乙個備用的txt檔案中

第五步:利用第四步輸出的sql語句或者txt文字進行語句過濾,重新插入資料或更新資料

以上方法可能會出現sql語句字段缺失的情況:如圖,上面一整段資料都是好的,下面的sql語句有缺失

如遇到以上問題可以嘗試使用下面的方法:

通過下面的命令將指定binlog二進位制日誌檔案中的sql自動執行一遍,區別於上面列印到txt文件中的方法

[root@localhost bin]# ./mysqlbinlog --no-defaults /www/server/data/mysql-bin.000004 --start-position="794" --stop-position="1055" | /www/server/mysql/bin/mysql -uroot -p123456 test

[root@localhost bin]# ./mysqlbinlog --no-defaults /www/server/data/mysql-bin.000004 --start-datetime="2020-12-15 00:00:00" --stop-datetime="2021-03-01 20:00:00" | /www/server/mysql/bin/mysql -uroot -psw
start-position 代表指定具體開始位置

start-datetime 代表指定具體開始日期

如何恢復Mysql資料庫

這裡說的mysql恢復資料庫,是指沒有通過正常備份的情況下,通過mysql儲存的資料檔案如何恢復資料庫。由於在一台測試機器上打算重新安裝mysql資料庫,由於簡單粗暴的直接解除安裝了,沒有備份公司discuz和redmine使用的mysql資料庫,過程可想的悲慘。還好的是只是解除安裝掉了mysql的...

oracle恢復被刪除的資料

兩種方法 1 scn方法 2 時間戳法 1 scn方法 通過scn恢復刪除資料的sql語法 a 獲取當前資料庫的scn號 select current scn from v database 查詢到的scn號為 b 查詢當前scn號之前的scn號 select from 表名 as of scn s...

ES分片被刪除後如何恢復

兩台es集群,xx客戶 xx專案經理竟然允許es裝在磁碟空間只有20g的伺服器上。由於磁碟緊張,指令碼刪除資料,但由於資料還有價值只能考慮掛載。在掛載的時候有一台es被無情刪除,那酸爽,嘿嘿。我頂你個肺,頂到底。一台es分片刪除後,不要問我分片是什麼,就是你開啟es頁面,本來綠色帶有乙個個數字的都沒...