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