【HBase】誤刪除資料怎麼辦?
有時候我們運算元據庫的時候不小心誤刪資料,這時候如何找回?mysql裡有binlog可以幫助我們恢復資料,但是沒有開binlog也沒有備份就尷尬了。如果是HBase,你沒有做備份誤刪了又如何恢復呢?
資料保護
當誤刪資料發生時候,不管三七二十一,第一要務是進入hbase shell,執行如下命令:
如果誤刪一張表的有多個family裡的資料,需要都執行一下:
alter 'tt', { NAME => 'f1', KEEP_DELETED_CELLS => TRUE }, { NAME => 'f2', KEEP_DELETED_CELLS => TRUE }
設定 KEEP_DELETED_CELLS 為 True 的目的在於防止資料被物理刪除。這裡有必要解釋一下HBase清理資料的原理:
首先HBase是一個LSM架構,不斷髮生著資料檔案的寫入和合並
當刪除操作發生時,不會去清理資料檔案中的資料,而是寫入一個刪除標記到新檔案中。
當某一刻major compaction發生時,在合併檔案的同時會根據刪除標記清理資料,新合併出來的資料檔案不會再有舊資料。
KEEP_DELETED_CELLS 的作用就是在major compaction發生的時候,決定要不要清理舊資料。這裡需要注意一點,即便 KEEP_DELETED_CELLS 設定為True,資料仍然會因為過期而被清理(HBsae表中的TTL屬性)。這個設定無可厚非,既然過期了,誤刪不誤刪也無所謂了。
資料恢復
資料恢復的前提資料沒有被物理刪除,也就是上文提及的。你只需要在查詢(Scan)的時候,指定raw模式來搜尋資料,就能看到被刪除的資料,之後你要做就是把資料再寫入一次。我們來看一個簡單的例子,還是以hbase shell為例子:
1、首先我們準備幾行資料
2、然後我們刪掉y開頭掉資料
3、查一下,現在只有3行了
4、現在我們帶上raw再次查詢資料,不僅能看到被刪除資料,還能看到刪除標記。
這裡我設定了TIMERANGE, 指定的是資料寫入的時間。對於我這個case其實並沒有什麼用,我只是想說明幾點:
即便不設定RAW,也可以透過時間搜尋到被刪資料。比如資料寫入時間是T,delete時間是T+2,那麼查詢[0, T+1]的話就能看見資料。前提是設定了 KEEP_DELETED_CELLS=TRUE
如果你後續寫入重複的Key,那你必須指定好TIMERANGE,不然你可能看到的不是原先刪除的keyVlaue。
delete操作預設的時間不是當前server的時間,也不是構造Delete物件的時間,而是被刪除的這個keyValue的寫入時間。當然這個得看版本,測試時候發現1.x和2.x還是不一樣的,有點坑,還以為高版本不能僅透過TIMERAGE搜素被刪資料了。
如果你的Delete mark的時間和資料的時間一樣,那隻能透過RAW看到。
資料恢復完,建議關閉KEEP_DELETED_CELLS,節省空間,提高查詢效率。
上文使用的是hbase shell演示,你可以使用任何語言的API完成上面的操作。
如果你使用的是雲HBase,即便因為major compaction物理刪除了資料,只要你開啟了備份功能,依然可以恢復。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2508/viewspace-2803485/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法
- 資料夾刪除不掉怎麼辦?資料夾無法刪除
- 達夢資料庫:誤刪除 undo/redo 日誌怎麼辦資料庫
- 桌面資料夾無法刪除怎麼辦?
- 資料夾刪除不了怎麼辦?資料夾刪除不了的解決方法
- Mac上的照片被誤刪除怎麼辦?Mac
- 資料夾正在使用無法刪除怎麼辦
- Flutter誤刪除android/ios目錄怎麼辦?FlutterAndroidiOS
- 【伺服器資料恢復】LINUX誤刪除、誤格式化怎麼恢復資料?伺服器資料恢復Linux
- win10 誤刪檔案怎麼辦_win10系統誤刪檔案怎麼辦Win10
- win10桌面出現無名資料夾怎麼刪除_win10桌面有一個無名資料夾不能刪除怎麼辦Win10
- 【伺服器資料恢復】伺服器誤刪除卷怎麼恢復資料伺服器資料恢復
- 非歸檔資料檔案誤刪除解決辦法
- DBCA 刪除資料庫例項時找不到例項名怎麼辦資料庫
- oracle恢復誤刪除資料Oracle
- 技術分享 | OceanBase 手滑誤刪了資料檔案怎麼辦
- 誤刪了電腦資料怎麼找回來?
- Oracle閃回刪除恢復誤刪資料Oracle
- 新增刪除程式打不開怎麼辦 新增刪除程式報錯解決辦法
- win10 刪除c盤資料夾需要system許可權怎麼辦Win10
- 電腦誤刪除檔案怎麼恢復檔案,不小心刪除了電腦的檔案怎麼辦
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 資料夾刪不掉需要管理員許可權怎麼辦 刪除需要管理員許可權的辦法
- 織夢無法刪除欄目怎麼辦
- WIN10系統為什麼有些資料夾刪除不掉 win10電腦檔案刪除不了怎麼辦Win10
- 【伺服器資料恢復】Zfs檔案系統下誤刪除怎麼恢復資料伺服器資料恢復
- win10怎麼用命令刪除資料夾_win10命令刪除資料夾方法Win10
- 電腦中temp資料夾可以刪除嗎 電腦中temp資料夾怎麼刪除
- 網站資料庫老是錯誤怎麼辦?網站資料庫
- 網站搬家資料庫錯誤怎麼辦?網站資料庫
- win10刪除沒有確定鍵怎麼辦_win10刪除檔案沒有提示該怎麼辦Win10
- win10 刪除文件失敗怎麼解決 win10檔案刪除不了怎麼辦Win10
- win10刪除資料夾需要許可權怎麼辦_win10刪除資料夾需要許可權的解決方法Win10
- postgresql怎麼刪除SQL
- 刪除資料夾時顯示在另一程式開啟怎麼刪除
- 不小心刪除/etc/passwd檔案怎麼辦
- mysql資料庫誤刪除操作說明MySql資料庫
- 利用Logmnr找回誤刪除的資料