HBase 增量備份和還原工具

來源:互聯網
上載者:User

HBase內建的export/import機制可以實現Backup Restore功能。而且可以實現增量備份。 下面設增量備份的python指令碼 在這個指令碼中,每天做增量備份,每個月15日做全備份。

 
  1. import time 
  2. import datetime 
  3. from datetime import date 
  4. import sys 
  5. import os 
  6.  
  7. tablename=sys.argv[1] 
  8. backupDst=sys.argv[2] 
  9. today=date.today() 
  10. if today.day == 15:    //every month, we do a full backup 
  11.         backupSubFolder=backupDst+today.isoformat()+"-full" 
  12.         cmd="hbase org.apache.hadoop.hbase.mapreduce.Export %s %s"%(tablename,backupSubFolder) 
  13. else: 
  14.  
  15.         yesterday=datetime.date.today()- datetime.timedelta(days=1) 
  16.         todayTimeStamp=time.mktime(today.timetuple()) 
  17.         yesTimeStamp=time.mktime(yesterday.timetuple()) 
  18.         backupSubFolder=backupDst+today.isoformat() 
  19.         cmd="hbase org.apache.hadoop.hbase.mapreduce.Export %s %s %s"%(tablename,backupSubFolder,str(int(todayTimeStamp)*1000) 
  20.  
  21. print cmd 
  22.  
  23. os.system(cmd) 

而Restore機制就更加簡單

 
  1. hbase org.apache.hadoop.hbase.mapreduce.Import tablename restorefolder 

要注意的是,做Restore時候,原始的表必須是建立好的。所以如果表本身被損壞,需要重新建立一個新的空表,再做Restore。

還有,必須在Hadoop-env.sh中配置好hbase和Zookeeper的路徑,加上這樣的語句

 
  1. export HADOOP_CLASSPATH="/usr/lib/hadoop-hbase/hbaseXXX.jar:/usr/lib/hadoop-hbase/lib/zookeeperXXX.jar:/etc/hadoop-hbase/conf" 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.