有備份的話很簡單,只需要生成乙個最近備份的資料 然後用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...