通過Oracle來輔助MySQL資料問題的恢復
今天琢磨一個問題,在平時的工作中如果碰到一些不規範的操作,drop,truncate,delete,恢復起來還是很困難的,drop操作在oracle中如果開啟了recycle bin還是基本安全的,delete操作可以藉助flashback delete操作,可能有些更細微的操作update,insert等等操作導致了問題,需要做資料修復的時候,這個時候可以使用flashback query來輔助,如果來一個truncate,那就沒轍了,其實在truncate操作完成後,一般來說資料還都是在資料檔案裡的,這個時候可以藉助第三方的資料恢復工具來嘗試恢復,這個時候資料恢復就不是毫秒級了,容忍度在分鐘甚至小時都是沒有辦法的事情。
不過在oracle中,如果你之前開啟了閃回資料庫功能,那truncate的資料就能找回來了。但是話說過來,整個系統都讓重啟給弄停了,這個影響可能更大。如果不使用flashback database,直接通過dataguard來做時間點恢復或者其它的標準恢復到資料刪除之前,也是一種方法。
所以說在oracle中對於資料的恢復方法很多,使用場景也可以根據需要來選擇。
在MySQL中資料恢復可供選擇的方案相對就比較少了。不過有一個亮點就是MySQL中的redo日誌是可讀的,mysqlbinlog可以很輕鬆地解析出來裡面的內容。不過truncate,drop,一些DML失誤操作場景來說,對於MySQL來說就比較困難了。
一旦發生了問題,做資料的恢復就只能藉助於最近的備份了,需要相應的備份,然後在最近的備份基礎上通過解析相關的binlog,直到把資料變更時間點的資料恢復。
這個過程總體來說還是需要不少的時間的,首先就是判斷備份和binlog的時間點,可以在其它測試環境中完成,需要花費的時間應該不短。
我想了下面這個方案,把oracle和mysql結合起來,充分利用Oracle的強大的閃回功能,可能這種方案對於很多資料恢復都有不少的亮點。
還沒有在本地測試,因為也需要一些額外的定製和資料型別對映,所以只是一個大概的思路。
首先還是保持MySQL原有的架構,一個主庫,兩個備庫。因為主庫中的binlog是做資料同步的關鍵,所以可以考慮設定一個路徑做sql解析,sql解析還是使用binlog,然後再做適當的變更。這個過程可以是一個非同步的過程,然後和Oracle結合起來部署到oracle中的schema中。
MySQL中的資料量相對來說還不是很大,所以可以考慮多個MySQL database和一個Oracle中的多個schema對映起來,資料型別可以適當做一些型別對映,比如,MySQL中的big int,small int等和oracle中的number直接對映。varchar和varchar2對映等等。
資料到位之後,就可以考慮通過各種閃回特性來做資料的恢復了。發生了truncate之類的操作可以使用flashback database來恢復,drop操作可以通過recycle bin,flashback database或者基於時間點等來恢復。delete可以通過閃回刪除,閃回查詢等來恢復。update可以通過閃回查詢來恢復等等。得到了相應的技術局之後,可以直接匯出csv檔案,或者insert語句來。在MySQL中通過mysqlimport或者insert來完成資料的部署。
這個過程中可以使得MySQL端始終保持前行,可以打一個比方,比如一個部隊在行軍,結果突然某個軍官發現自己的地圖沒帶,落下半路上了,這個時候可以派一個士兵騎馬去取地圖。這個時候oracle就是那個士兵,能夠完成這個艱鉅的任務,部隊依舊行進,不會產生其他影響。
不過在oracle中,如果你之前開啟了閃回資料庫功能,那truncate的資料就能找回來了。但是話說過來,整個系統都讓重啟給弄停了,這個影響可能更大。如果不使用flashback database,直接通過dataguard來做時間點恢復或者其它的標準恢復到資料刪除之前,也是一種方法。
所以說在oracle中對於資料的恢復方法很多,使用場景也可以根據需要來選擇。
在MySQL中資料恢復可供選擇的方案相對就比較少了。不過有一個亮點就是MySQL中的redo日誌是可讀的,mysqlbinlog可以很輕鬆地解析出來裡面的內容。不過truncate,drop,一些DML失誤操作場景來說,對於MySQL來說就比較困難了。
一旦發生了問題,做資料的恢復就只能藉助於最近的備份了,需要相應的備份,然後在最近的備份基礎上通過解析相關的binlog,直到把資料變更時間點的資料恢復。
這個過程總體來說還是需要不少的時間的,首先就是判斷備份和binlog的時間點,可以在其它測試環境中完成,需要花費的時間應該不短。
我想了下面這個方案,把oracle和mysql結合起來,充分利用Oracle的強大的閃回功能,可能這種方案對於很多資料恢復都有不少的亮點。
還沒有在本地測試,因為也需要一些額外的定製和資料型別對映,所以只是一個大概的思路。
首先還是保持MySQL原有的架構,一個主庫,兩個備庫。因為主庫中的binlog是做資料同步的關鍵,所以可以考慮設定一個路徑做sql解析,sql解析還是使用binlog,然後再做適當的變更。這個過程可以是一個非同步的過程,然後和Oracle結合起來部署到oracle中的schema中。
MySQL中的資料量相對來說還不是很大,所以可以考慮多個MySQL database和一個Oracle中的多個schema對映起來,資料型別可以適當做一些型別對映,比如,MySQL中的big int,small int等和oracle中的number直接對映。varchar和varchar2對映等等。
資料到位之後,就可以考慮通過各種閃回特性來做資料的恢復了。發生了truncate之類的操作可以使用flashback database來恢復,drop操作可以通過recycle bin,flashback database或者基於時間點等來恢復。delete可以通過閃回刪除,閃回查詢等來恢復。update可以通過閃回查詢來恢復等等。得到了相應的技術局之後,可以直接匯出csv檔案,或者insert語句來。在MySQL中通過mysqlimport或者insert來完成資料的部署。
這個過程中可以使得MySQL端始終保持前行,可以打一個比方,比如一個部隊在行軍,結果突然某個軍官發現自己的地圖沒帶,落下半路上了,這個時候可以派一個士兵騎馬去取地圖。這個時候oracle就是那個士兵,能夠完成這個艱鉅的任務,部隊依舊行進,不會產生其他影響。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1631615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 通過 binlog 恢復資料MySql
- 通過binlog恢復mysql資料庫MySql資料庫
- 通過binlog恢復mysql備份之前的資料MySql
- mysql通過frm、idb檔案恢復資料MySql
- MySQL 5.6.26 通過frm & ibd 恢復資料過程MySql
- 通過duplicat恢復資料庫資料庫
- Oracle資料恢復專題Oracle資料恢復
- Mysql通過ibd檔案恢復資料的步驟詳解MySql
- MySQL 透過 binlog 恢復資料MySql
- 資料恢復新姿勢——通過ibd和frm檔案恢復資料資料恢復
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- Oracle & MySQL & PostgreSQL資料庫恢復支援OracleMySql資料庫
- rman通過之前的incarnation恢復資料庫!資料庫
- MySQL通過bin log日誌恢復資料|手撕MySQL|對線面試官MySql面試
- mysql資料恢復MySql資料恢復
- 【Mysql】如何透過binlog恢復資料MySql
- MySQL通過Binlog恢復刪除的表MySql
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- MySQL資料庫的恢復MySql資料庫
- 【RMAN】oracle11g單機資料通過RMAN恢復至RACOracle
- Oracle 業務資料unload恢復過程Oracle
- ORACLE資料恢復Oracle資料恢復
- Oracle中truncate table後的資料恢復(Oracle資料恢復工具-ODU)Oracle資料恢復
- oracle 816 imp恢復資料遇到問題及解決Oracle
- 【資料庫資料恢復】透過資料頁恢復Sql Server資料庫資料的過程資料庫資料恢復SQLServer
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 【DATAGUARD】Oracle 通過Dataguard指定恢復時間用於找回丟失資料Oracle
- 通過oracle類比MySQL中的位元組字元問題OracleMySql字元
- 一次Oracle資料庫恢復過程Oracle資料庫
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- MySQL 5.6.26 透過frm & ibd 恢復資料過程MySql
- ORACLE-資料恢復Oracle資料恢復
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- MySQL恢復過程MySql
- 幾種主要的oracle資料庫問題發生後資料恢復的成功概率分析Oracle資料庫資料恢復
- rman不使用恢復目錄恢復資料庫示例及問題資料庫
- 生產庫的恢復目錄被RMAN恢復出來的資料庫庫使用後出現的問題資料庫