作者 | 博
选型背景及过程
网源监督是电力系统中的一项重要工作,主要负责电源与电网之间的协调配合以及监督管理,其核心目标是保障电力系统的安全稳定运行。系统采集的监控数据是典型的时序数据,具有密度大、实时性高等特点,过去我们使用开源的CDH(Cloudera's Distribution including Apache Hadoop)大数据平台作为主要存储解决方案,长期存在存储和查询效率低下,响应延迟严重的问题。同时,随着系统运行多年,HBase的低压缩率问题日益凸显,磁盘空间逐渐耗尽,存储压力不断加剧。此外,由于Kafka和HBase等组件被部署在同一节点上,数据磁盘I/O压力过大,数据分布不均,进一步加剧了系统性能瓶颈。更严重的是,硬件故障频发,八台服务器中有三台因硬件损坏无法恢复,直接导致部分数据丢失,数据库整体濒临崩溃,而且历史数据量庞大,每日新增数据量高达85亿条,这对存储系统的处理能力提出了极为严峻的挑战。
鉴于此,我们决定对数据库架构进行全面升级。综合对比了目前市面上主流的开源时序数据库产品,我们选择openGemini作为CDH替代方案,以解决现有系统的存储和性能问题。openGemini在数据压缩、分布式存储和高可用性方面的优势,使其成为理想的解决方案,能够有效缓解当前的系统压力并提升整体稳定性。
经验分享

我们使用六台物理机搭建了两套openGemini集群(每套集群三个节点,一套作为主集群,一套作为备份集群,开发了一个数据同步工具来实现故障集群的数据同步),并采用单副本模式以优化存储效率。如此一来,我们在可靠性和存储成本之间找了一个平衡点。
由于本次需要迁移的数据量极为庞大(CDH采用的三副本方案,整体约占用70T的存储空间),我们采用了分阶段迁移的策略,依据时间维度将数据按年份分批处理。具体实施时,数据先通过 Kafka 进行缓冲,再批量写入 openGemini。这种架构设计不仅实现了迁移过程的并行化,显著提升了迁移效率,还通过分布式处理降低了单点压力,进一步增强了迁移的稳定性和可靠性。此外,分批迁移的方式还便于监控和调整,确保整个过程可控且高效。

具体迁移方案如下:
1、初步迁移
由于旧 CDH 集群的磁盘即将满载,我们首先部署了一台单机版 openGemini 和单节点 Kafka,用于接收新写入的数据。通过 Kafka新数据被实时接入单机版 openGemini,确保了数据的初步流转。
2、中转集群搭建与数据迁移
在单机版系统稳定运行后,我们进一步扩展架构,搭建了 5 台服务器组成的 openGemini 中转集群,用于老数据的迁移。同时,我们开发了一套数据迁移工具,从 CDH 数据库按年份分批查询数据并写入 Kafka,再通过 Kafka 将数据同步到 openGemini 中转集群。由于 CDH 集群部分节点损坏,数据查询频繁报错,迁移速度受限,整个过程耗时约 4 个月才完成。
3、正式集群搭建和数据回迁
迁移完成后,我们对 CDH 所在的服务器进行了系统重装和磁盘规整。在此基础上,我们部署了三台服务器组成的 Kafka 集群,以及六台服务器组成的两套三节点 openGemini 分布式集群(主备架构)。通过 Kafka 的双消费组机制,主备集群实现了数据的同步写入,保证了主备数据的一致性。
4、数据整合与最终迁移
我们将中转数据库中的数据通过迁移工具写入新 Kafka 集群,并消费 Kafka 中的数据完成 openGemini 主备集群的写入。同时,新写入实时数据也被接入到新 Kafka 集群中,单机版 openGemini 的数据也成功迁移到主备集群。至此,整个迁移工作圆满完成。
使用openGemini 之后的效果
与原 CDH的 3 副本模式相比,使用openGemini之后显著降低了磁盘占用空间。原 CDH数据库在 3 副本模式下占用约 70TB 磁盘空间,但由于三个节点损坏且无法恢复,部分数据无法完成迁移,因此无法进行完整的压缩效率对比。完成迁移后,数据在 openGemini 中仅占用约 4TB (单副本)磁盘空间。
目前,openGemini 集群已平稳运行超过三个月,系统性能稳定,数据查询和写入效率均表现优异。通过此次迁移,我们不仅解决了原数据库存储空间不足问题,还验证了openGemini 在大规模时序数据存储和管理方面的高效性和可靠性。未来,我们将继续优化集群配置,进一步提升系统的扩展性和可用性。
写在最后(未来展望)
现在的openGemini表现基本已经满足我们业务诉求。未来,我们愿在以下方面与社区深化合作,以更好地支持业务发展:
支持更丰富的sql语句,例如to_date函数可以把yyyy-MM-dd格式的时间转换为纳秒
流式计算的增强,以支持多点计算
有损压缩
openGemini 官网:http://www.openGemini.org
Star for me😊:https://github.com/openGemini
openGemini 公众号:

欢迎关注~ 诚邀你加入 openGemini 社区,共建、共治、共享未来!




