首页 > 大数据 > > hbase表的备份方法
在实际的开发工作中,数据开发人员会进行一些数据的迁移或者数据的备份工作,本文主要介绍hbase的备份方法
hbase提供了很简单的一种通过snapshot方式进行打快照和恢复快照.同时也可以通过这种方式定期的备份hbase数据,以防数据丢失.
一、hbase表级备份原理
对当前表做快照,可以使用恢复快照命令将表到某个时间点。
Snapshot 命令通常在秒级即可完成、快照只生成一些元数据,不会对文件本身产生影响。HBase 提供导出快照功能,可以将快照文件导出到另外的HBase集群进行恢复。也可以在原集群进行恢复。恢复在秒级完成。目前仅支持对当前时间点做全量快照,无法增量备份。
HBase 配置支持快照功能:
<property> <name>hbase.snapshot.enabled</name> <value>true</value> </property>
启动hbase shell
bin/hbase shell执行快照命令
snapshot 'myTable','myTable20200220'列出快照
list_snapshots删除快照
delete_snapshot 'myTable20200220'恢复某一个快照
restore_snapshot 'myTable20200220'也可以很方便的将快照导出到另外一个集群
bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://hadoop-data-2:8082/hbase -mappers 16二、定期的备份hbase表脚本
最后提供一个定期备份的脚本
#!/bin/sh
export HBASEPATH=/usr/local/hdp/hbase/lib
export BACKUP_DIR=/home/hbasebackup/
export DATE=`date +"%Y%m%d"`
export DATE_2=`date -d "-7 day" +"%Y%m%d"`
export hbase_table_backup_log=hbase.bak.$DATE.log
export hbase_table_backup_shell=hbase.bak.sh
if [ -f $BACKUP_DIR/$hbase_table_backup_log ] ; then
echo " Today's(`date +"%Y-%m-%d %H:%M:%S"`) BACKUP job has done"
else
echo " `date +"%Y-%m-%d %H:%M:%S"` backup hbase start...."
echo "snapshot 'hbase_','hbase_xx_$DATE' " > $BACKUP_DIR/$hbase_table_backup_shell
echo "delete_snapshot 'hbase_xxx_$DATE_2' " >> $BACKUP_DIR/$hbase_table_backup_shell
echo "exit" >> $BACKUP_DIR/$hbase_table_backup_shell
sleep 10
$HBASEPATH/hbase shell $BACKUP_DIR/$hbase_backup_shell > "$BACKUP_DIR/$hbase_backup_log"
fi希望本文对你有帮助!
感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3163886/ ,如需转载,请注明出处,否则将追究法律责任。