HBase Snapshots容許你對一個表進行快照(便可用副本),它不會對Region Servers產生很大的影響,它進行復制和 恢復操做的時候不包括數據拷貝。導出快照到另外的集羣也不會對Region Servers產生影響。 下面告訴你如何使用Snapshots功能shell
1.開啓快照支持功能,在0.95+以後的版本都是默認開啓的,在0.94.6+是默認關閉 apache
<property> <name>hbase.snapshot.enabled</name> <value>true</value></property>
2.給表創建快照,無論表是啓用或者禁用狀態,這個操做不會進行數據拷貝bootstrap
$ ./bin/hbase shell hbase> snapshot ,
3.列出已經存在的快照app
$ ./bin/hbase shell hbase> list_snapshots
4.刪除快照oop
$ ./bin/hbase shell hbase> delete_snapshot 'myTableSnapshot-122112'
5.從快照複製生成一個新表spa
$ ./bin/hbase shell hbase> clone_snapshot 'myTableSnapshot-122112', 'myNewTestTable'
6.用快照恢復數據,它須要先禁用表,再進行恢復rest
$ ./bin/hbase shell hbase> disable 'myTable' hbase> restore_snapshot 'myTableSnapshot-122112'
提示:由於備份(replication)是系統日誌級別的,而快照是文件系統級別的,當使用快照恢復以後,副本會和master出於不一樣的狀態,若是你須要使用恢復的話,你要中止備份,而且重置bootstrap。日誌
若是是由於不正確的客戶端行爲致使數據丟失,全表恢復又須要表被禁用,能夠採用快照生成一個新表,而後重新表中把須要的數據用map-reduce拷貝到主表當中。code
7.複製到別的集羣當中orm
該操做要用hbase的帳戶執行,而且在hdfs當中要有hbase的帳戶創建的臨時目錄(hbase.tmp.dir參數控制)
採用16個mappers來把一個名爲MySnapshot的快照複製到一個名爲srv2的集羣當中
$ bin/hbase class org.apache.hadoop.hbase.snapshot.tool.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://srv2:8020/hbase -mappers 16