
# 配置HBase主备集群数据自动备份
#### 前提条件
1. 主备集群已经安装并且启动。
2. 主备集群上的时间必须一致，而且主备集群上的NTP服务必须使用同一个时间源。
3. 当主集群HBase服务关闭时，ZooKeeper和HDFS服务应该启动并运行。
4. 该工具应该由启动HBase进程的系统用户运行。
5. 如果处于安全模式，请确保备用集群的HBase系统用户具有主集群HDFS的读取权限。因为它将更新HBase系统ZooKeeper节点和HDFS文件。
6. 主集群HBase故障后，主集群的ZooKeeper，文件系统和网络依然可用。
 
#### 场景介绍
Replication机制可以使用WAL将一个集群的状态与另一个集群的状态保持同步。启用HBase备份后，若主集群出现故障，ReplicationSyncUp工具会使用来自ZooKeeper的信息将主集群中的启用HBase备份功能的数据增量同步到备集群中。数据同步完成后，备集群可以作为主集群使用。
#### 参数配置
| 参数                                 | 描述                                                          | 默认值   |
|:---|:---|:---|
| hbase.replication.bulkload.enabled | 是否开启批量加载数据复制功能。参数值类型为Boolean。开启批量加载数据复制功能后该参数须在主集群中设置为true。 | false |
| hbase.replication.cluster.id       | 源HBase集群ID。开启批量加载数据复制功能时必须设置该参数，在源集群定义。参数值类型为String。        | -     |
   
#### 使用ReplicationSyncUp工具
在主集群**hbase shell**中输入如下命令使用：
**hbase org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp -Dreplication.sleep.before.failover=1**
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
replication.sleep.before.failover是指在RegionServer启动失败时备份其剩余数据前需要的休眠时间。由于30秒（默认值）的睡眠时间没有任何意义，因此将其设置为1（s），使备份过程更快触发。
#### 注意事项
1. 当主集群关闭时，此工具将从ZooKeeper节点（RS znode）获得WAL的处理进度以及WAL的处理队列，并将未复制的队列复制到备集群中。
2. 每个主集群的RegionServer在备集群ZooKeeper上的replication节点下都有自己的znode。它包含每个对等集群的一个znode。
3. 当RegionServer故障时，主集群的每个RegionServer都会通过watcher收到通知，并尝试锁定故障RegionServer的znode，包含它的队列。成功创建的RegionServer会将所有队列转移到自己队列的znode下。队列传输后，它们将从旧位置删除。
4. 在主集群关闭期间，ReplicationSyncUp工具将使用来自ZooKeeper节点的信息同步主备集群的数据，并且RegionServer znode的wals将被移动到备集群下。
 
#### 限制和约束
如果备集群处于关闭状态或关闭了对等关系，该工具正常运行，只有该对等关系复制不会发生。
