在进行数据恢复前,必须停止HBase服务,避免恢复过程中产生新数据写入,导致数据冲突或覆盖。
systemd(Debian 9及以上版本默认):sudo systemctl stop hbase
sudo service hbase stop
停止后,可通过ps aux | grep hbase确认HBase相关进程已完全终止。
HBase数据恢复主要有三种方式,需根据之前备份的类型选择对应操作:
前提:需提前通过HBase命令创建过快照(快照是表的静态视图,不影响集群运行)。
/hbase/.hbase-snapshot/目录下,使用hadoop fs命令复制到HBase的HDFS数据目录(如/hbase/data):hadoop fs -cp /hbase/.hbase-snapshot/YourSnapshotName /hbase/data
sudo systemctl start hbase
hbase shell
hbase(main):001:0> list # 查看所有表
hbase(main):002:0> scan 'your_table_name' # 扫描目标表数据
hadoop fs -rm -r /hbase/.hbase-snapshot/YourSnapshotName
前提:需提前备份了HBase的WAL(Write-Ahead Log)日志(默认存储在/hbase/WALs/目录)。
/backup/wal_logs/中的文件)复制到HBase的WAL目录:hadoop fs -cp /backup/wal_logs/* /hbase/WALs/
sudo systemctl start hbase
前提:需提前使用hbase backup命令创建了全量或增量备份(备份路径需明确)。
全量恢复步骤:
/hbase/data):hadoop fs -rm -r /hbase/data
hadoop fs -cp /backup/full_backup/* /hbase/data
增量恢复步骤:
hbase backup restore命令恢复增量备份(需指定增量备份路径):hbase backup restore /backup/incremental_backup
/var/log/hbase/目录)确认无错误:tail -f /var/log/hbase/hbase-*-master-*.log
tail -f /var/log/hbase/hbase-*-regionserver-*.log
hbase hbck工具检查数据一致性(修复轻微损坏):hbase hbck -repair
hbase shell
hbase(main):001:0> status 'simple'
hadoop fs -ls检查文件数量)。/hbase/data)的属主为hbase用户(Debian默认安装后为hbase):sudo chown -R hbase:hbase /hbase/data