全量、增量数据在HBase迁移的多种技巧实践

作者经历了多次基于HBase实现全量与增量数据的迁移测试,总结了在使用HBase进行数据迁移的多种实践,本文针对全量与增量数据迁移的场景不同,提供了1+2的技巧分享。

HBase全量与增量数据迁移的方法

1.背景

在HBase使用过程中,使用的HBase集群经常会因为某些原因需要数据迁移。大多数情况下,可以用离线的方式进行迁移,迁移离线数据的方式就比较容易了,将整个hbase的data存储目录进行搬迁就行,但是当集群数据量比较多的时候,文件拷贝的时间很长,对业务影响时间也比较长,往往在设计的时间窗口无法完成,本文给出一种迁移思路,可以利用HBase自身的功能,对集群进行迁移,减少集群业务中断时间

2.简介

大家都知道HBase有snapshot快照的功能,利用快照可以记录某个时间点表的数据将其保存快照,在需要的时候可以将表数据恢复到打快照时间时的样子。我们利用hbase的snapshot可以导出某个时间点的全量数据。

因为实际的业务还在不停的写入表中,除了迁移快照时间点之前的全量数据,我们还需要将快照时间点后源源不断的增量数据也迁移走,这里如果能采用双写的方式,将数据写入两个集群就好了,但是现实的业务不会这样做,如果这样做还得保证双写的事务一致性。于是可以利用HBase的replication功能,replication功能本身就是保留了源集群的WAL日志记录,去回放写入到目的集群,这样一来用户业务端->原始集群->目的集群便是个串形的数据流,且由HBase来保证数据的正确性。

所以这个迁移的方法就是利用snapshot迁移全量数据,利用replication迁移增量数据。

3.迁移步骤

全量、增量数据在HBase迁移的多种技巧实践_第1张图片

上图给出了迁移的整个时间线流程,主要有这么5个时间点。

T0: 配置好老集群A集群到新集群B的Replication关系,Replication的数据由A集群同步到集群B,将表设置成同步,从此刻开始新写入A集群表的数据会保留在WAL日志中;

T1: 生成该时间点的全量数据,通过创建快照,以及导出快照数据的方式将该时间点的数据导出到新集群B;

T2: 新集群B将T1时刻的快照数据导入,此时新集群B中会由快照创建出表,此时老集群A集群上设置的Replication的关系会自动开始将T0时刻保留的WAL日志回放至新集群B的表中,开始增量数据同步。

T3: 由于从T0-T3之间的操作会花费一段时间,此时会积累很多WAL日志文件,需要一定的时间来同步至新集群,这里需要去监控一下数据同步情况,等老集群WAL被逐渐消费完,此时可以将老集群的写业务停止一下并准备将读写业务全部切到新集群B。

你可能感兴趣的:(云计算,华为云)