Ubuntu上HBase數據備份方法
快照是HBase最常用的備份方式,它通過記錄表的元數據和HFiles信息實現,創建時不影響表的正常讀寫,性能開銷極低。
snapshot '表名', '快照名'
(例如snapshot 'user_table', 'user_snapshot_202510'
)。list_snapshots
確認快照是否存在。disable '表名'
;restore_snapshot '快照名'
;enable '表名'
。delete_snapshot '快照名'
釋放存儲空間。HBase自帶的hbase backup
命令支持全量和增量備份,需提前配置hbase-site.xml
:
hbase-site.xml
中添加:<property><name>hbase.backup.enable</name><value>true</value></property>
<property><name>hbase.backup.dir</name><value>/hbase/backup</value></property>
重啟HBase使配置生效:sudo systemctl restart hbase-master
、sudo systemctl restart hbase-regionserver
。hbase backup create full hdfs://namenode:9000/hbase/backup/full_backup
(將全量數據備份到指定HDFS路徑)。hbase backup create incremental hdfs://namenode:9000/hbase/backup/incremental_backup -t 表名
(僅備份自上次備份以來的變更數據)。HBase數據存儲在HDFS中,可通過DistCp(分布式復制工具)將HBase數據目錄復制到異地或本地存儲,實現高可靠性備份。
hadoop distcp hdfs://namenode:9000/hbase hdfs://backup-namenode:9000/hbase_backup
(將HBase數據從源集群復制到備份集群)。hadoop distcp hdfs://backup-namenode:9000/hbase_backup hdfs://namenode:9000/hbase
(將備份數據復制回原集群)。EXPORT TABLE 表名 TO '/hdfs/backup/表名_backup'
;IMPORT TABLE 表名 FROM '/hdfs/backup/表名_backup'
。./xtrabackup --backup --target-dir=/backup/hbase --hbase-home=/usr/local/hbase
;./xtrabackup --prepare --target-dir=/backup/hbase
(準備備份)、./xtrabackup --copy-back --target-dir=/backup/hbase
(復制回原目錄)。/hbase/WALs/
目錄下的日志文件復制到備份存儲(如HDFS),恢復時將WAL日志復制回原目錄,HBase啟動時會自動重放未提交的操作。hbase.backup.strategy.differential.window.hours
參數配置窗口大小。