mysql 找回誤刪表的資料辦法

2021-07-27 22:48:45 字數 1562 閱讀 3337

有備份的話很簡單,只需要生成乙個最近備份的資料 然後用mysqlbinlog找回備份時間點之後的資料 再恢復到現網即可。

要是沒有備份 可能就會比較麻煩,找回資料的成本也是非常之高的.

下面介紹下 mysqlbinlog找回備份時間點之後的資料的辦法:

做個簡單的實驗,將mysql的表資料刪除之後,然後用mysqlbinlog 找回剛才刪除的表的資料。

原理: mysqlbinlog

前提: mysql開啟了bin log日誌

測試刪除之前:

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2013-02-04 11:45:44 |

+---------------------+

1 row in set (0.01 sec)

開始刪除資料:

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2013-02-04 12:08:45 |

+---------------------+

開始找回資料:

1.找到bin log的位置:

-rw-rw---- 1 mysql mysql  17k feb  4 11:43 alert.log

-rw-rw---- 1 mysql mysql 1.0k nov  1 14:52 master-bin.000001

-rw-rw---- 1 mysql mysql  126 dec 25 14:00 master-bin.000002

-rw-rw---- 1 mysql mysql  126 dec 25 14:02 master-bin.000003

-rw-rw---- 1 mysql mysql  126 dec 25 14:02 master-bin.000004

-rw-rw---- 1 mysql mysql  107 dec 25 14:02 master-bin.000005

-rw-rw---- 1 mysql mysql  13k feb  4 12:02 master-bin.000006

可以看到 最近被修改的bin log 只有  master-bin.000006 

(要是誤刪除跨越了好幾個bin log 找回資料的時候就必須乙個個的bin log日誌去找回了)

將這一段時間所有執行的sql語句存入到 待恢復的 sql檔案中。

當然在現網環境下 ,這個時間可能沒那麼的準確,並且還有其他事務sql語句的干擾。

建立臨時資料庫

create database for_bak;

將現在的資料匯入到臨時表:

可以看到 資料是什麼時間點刪除的 。  具體的時間也可以用 select from_unixtime(1359949544); 來查詢

我想這種情況一般比較的少。雖然麻煩,但是也不是不能恢復。

快速找回誤刪表資料方式

如果不小心刪除了資料庫表資料,可以採用如下方式找回 第一種 開啟flash儲存的許可權,執行 alter table tablename enable row movement 把錶還原到指定時間點,flashback table tablename to timestamp to timestam...

找回oracle中被誤刪的表的資料

在未開啟閃回的oracle資料庫中,表的資料被誤刪之後,即使沒有開啟閃回,只要發現及時還是有方法找回的,前提是資料還存在於undo 中沒被刷出去。要是被刷出undo 了,只能試試通過logminer 挖掘歸檔日誌,或者從備份中還原了 12c rman好像是可以直接針對表進行資料還原的 通過時間戳方式...

檔案誤刪資料如何找回

永久刪除檔案是很常見的資料恢復故障。在永久刪除檔案後如何恢復資料就顯的尤為重要了,首先我們需要明白,在永久刪除檔案後不能往要恢復的誤刪檔案所在的分割槽,存入任何新的檔案,否則資料覆蓋了就無力回天了。接下來我們還需要了解下具體如何恢復永久刪除檔案的資料,具體請看正文了解。工具 軟體 auroradat...