Hbase-数据备份

 

数据备份分类:
hbase数据备份分为离线备份和在线备份两大类。

1.离线备份:离线备份对于在线业务不友好(不友好体现在,备份时需要关闭数据库或者禁用表,不能对外提供读写服务,在线业务对数据库的依赖性强,你关闭了或者禁用了,业务执行所需要的数据就取不到了或者写不进去了),所以在0.94之后的版本就弃用了离线备份方案。

2.在线备份就是在进行数据备份的时候不需要关闭数据库,备份时还可以提供对外服务。
常用在线数据备份包括以下几种:
copytable、export/import(先导出到目标集群,再导入到目标集群的表中)、replication、snapshot(快照)

接下来我们详细说说copytable在线备份方案的操作:

copytable方案

copytable,顾名思义就是拷贝表或复制表,它可以拷贝表的部分或者全部内容;它可以在同一个集群内进行表的拷贝,也可以在不同集群间进行表的拷贝(比如将某个集群中的表拷贝到另一个集群上)。

进行copytable操作的前提是:必须要在目标集群上事先创建好拷贝的数据要存储的表,比如要拷贝表test1到表test2上,那么在目标集群上就必须先创建test2表,不然会报错。

copytable的用法:
通过bin/ hbase org.apache.hadoop.hbase.mapreduce.CopyTable --help查看用法
 
bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable [--starttime=X] [--endtime=Y] [--new.name=newtablename] [--peer.adr=ADR] tablename
对copytable用法的理解:拷贝tablename这张表上的从starttime开始到endtime结束的这部分数据到目标集群[--peer.adr=ADR]上的目标表[--new.name=newtablename]上;
在服务器上可以执行hbase shell命令,表示在bin目录下,直接执行hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name="newtable" "oldtable"即可
 
参数解释:
--starttime=X :执行时间范围的开始时间
--endtime=Y :执行时间范围的结束时间
ps:若--starttime=X和--endtime=Y同时使用,那就是拷贝指定时间范围内的数据;如果仅用了
--starttime=X,那就是拷贝从starttime开始之后的所有数据;如果仅用了--endtime=Y,就是拷贝从该表的第一条数据开始到endtime的所有数据;
--startrow和--stoprow用于通过rowkey指定拷贝的区间,它的理解和使用跟--starttime和--endtime一样;
(注意:这涉及到区间的问题都有开闭之分,这里的区间都是左闭右开的,即拷贝的数据包括开始的,但不包括结束的)
--new.name :指定目标表的名字
tablename:所要拷贝的表的名字
--peer.adr : 目标集群的地址(默认是指本集群,如果是本集群的拷贝,那就不用指定集群地址的,否则报错,如果是跨集群那指定的就应该是另一个集群的地址)
集群地址的格式:hbase.zookeeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.parent
即zookeeper的地址:端口号:节点存储目录
使用例子:volcano01.cc.com,volcano02.cc.com,volcano03.cc.com:2181:hbase
 

参考原文链接:https://www.jianshu.com/p/731ba954e6c4

posted @ 2021-04-06 17:20  奇葩兔子  阅读(428)  评论(0)    收藏  举报