摘要:本期将具体介绍 SSDB、LevelDB 和 RocksDB 到 GaussDB(for Redis) 的迁徙。
本文分享自华为云社区《华为云 PB 级数据库 GaussDB(for Redis) 揭秘第十一期:GaussDB(forRedis) 迁徙系列(下)》,原文作者:高斯 Redis 官网博客。
GaussDB(for Redis) 是一款基于计算存储拆散架构,兼容 Redis 生态的云原生 NoSQL 数据库,基于共享存储池的多正本强统一机制,反对长久化存储。在保障数据库的高兼容、搞性价比、高牢靠、无损扩容等特点的同时,GaussDB(forRedis) 团队针对不同的数据库产品,为用户提供了多种数据迁徙计划,本期将具体介绍 SSDB、LevelDB 和 RocksDB 到 GaussDB(for Redis) 的迁徙。
1、SSDB 到 GaussDB(for Redis) 的迁徙
SSDB 是一款应用 C/C++ 语言开发的高性能 NoSQL 数据库,和 Redis 具备类似的 API,反对 KV,list,map(hash),zset(sorted set),qlist(队列) 等数据结构,因而失去了宽泛的利用。SSDB 是一个长久化的 KV 存储系统,底层应用 leveldb 作为存储引擎。其业务间接与 LevelDB 交互,Compaction 等操作会对业务读写造成间接的影响。GaussDB(forRedis) 是一款兼容 Redis 生态的云原生 NoSQL 数据库,基于共享存储池的多正本强统一机制,以保证数据的安全性和可靠性。GaussDB(forRedis) 应用 RocksDB 作为存储引擎,其性能与 leveldb 相比有了很大的晋升, 并解决了 leveldb 被动限度写的问题,同时实现了冷热拆散,减小了存储层的操作对性能造成的影响。
1.1 迁徙原理
ssdb-port 作为源端 SSDB 数据库的主节点的从节点(replica)运行,通过主从复制的形式进行数据迁徙。将获取到的数据解析、转换为 Redis 反对的格局,并发送到配置文件中指定的 Redis 实例,迁徙过程如下图所示。全量同步实现后,SSDB 中新增的数据也会同步到 Redis 实例中。
1.2 前提条件
- 部署迁徙工具 ssdb-port。
-
保障迁徙工具 ssdb-port、源端 SSDB 和指标端 GaussDB(for Redis) 网络互通。
1.3 操作步骤
- 正确批改 ssdb-port 的配置文件 conf。
- 应用./ssdb-portssdb_port.conf 命令启动过程,进行数据迁徙。
- 跟踪迁徙日志,评估迁徙进度,迁徙实现后,在高斯 Redis 实例上校验迁徙数据的正确性和齐备性。
- 校验实现后将业务切到 GaussDB(for Redis)。
1.4 应用须知
- ssdb-port 作为 SSDB 主节点的从节点,只读取全量和增量数据,无数据受损危险。
- 因为在源端应用 ssdb-port 迁徙工具,源端 SSDB 性能会受到肯定的影响。
-
全量迁徙和增量迁徙能够不停服,数据全副迁入 GaussDB(forRedis) 后须要短暂停服。
1.5 迁徙性能参考
- 环境:源端 SSDB 和 ssdb-port 同时部署在华为云 4U16GB 的弹性云服务器上,指标端为 8U16GB,3 节点 GaussDB(for Redis) 实例。
- 预置数据:应用 memtier_benchmark 工具预置 100GB 数据。
-
迁徙性能:约 3000qps。
2、LevelDB 到 GaussDB(for Redis) 的迁徙
LevelDB 是一个开源的长久化 KV 单机数据库引擎,具备很高的随机写,程序读 / 写性能,适宜利用在写多读少的场景。其外部没有设计成 C/S 网络结构,应用时必须和服务部署在同一台服务器,对于服务的部署、应用有较大的限度。相比于在 LevelDB 根底上开发的 RocksDB, LevelDB 存在较多毛病,如无奈很好的应用多核服务器的计算性能,无奈撑持 TB 级数据存储,不反对从 HDFS 读取数据等。
GaussDB(for Redis) 采纳 RocksDB 作为存储引擎,兼容 Redis 协定,具备丰盛的数据类型,能够满足 LevelDB 的应用需要。同时 GaussDB(for Redis) 对 RocksDB 进行深度定制,实现秒级决裂弹性扩容,扩缩容无需搬迁数据,疾速而平滑,为 LevelDB 业务转到 Redis 生态提供了便当。
2.1 迁徙原理
应用自研迁徙工具 leveldb-port,和 LevelDB 部署在雷同机器上,筹备好配置文件,启动迁徙即可主动实现全量与增量的迁徙。全量迁徙对 LevelDB 数据进行快照,而后扫描整个数据库,将数据打包成 GaussDB(forRedis) 辨认的格局,发送到 GaussDB(forRedis),具备很高的迁徙效率。增量迁徙解析 LevelDB 的 wal 文件,将 LevelDB 的操作解析进去,而后对其中的 key 进行分片,多线程进行发送。
2.2 操作步骤
将 leveldb-port 部署在 leveldb 所在服务器上,确保与高斯 Redis 网络买通。
确保指标端 GaussDB(for Redis) 实例已清空,从安全性思考,对外不提供 flushall 命令,迁徙之前应保障实例内数据已革除。
批改配置文件。
- 筹备工作:
- 将 leveldb-port 部署在 leveldb 所在服务器上,确保与高斯 Redis 网络买通。
- 确保指标端 GaussDB(for Redis) 实例已清空,从安全性思考,对外不提供 flushall 命令,迁徙之前应保障实例内数据已革除。
- 批改配置文件。
- 执行命令./leveldb-port./leveldb-port.conf。
- 跟踪日志,判断迁徙状态:
全量迁徙实现,会打印 ”Fullmigrate finished”;
增量迁徙定时打印尚未实现的 wal 文件数及尚未发送进来的 kv 数。
- 数据验证:对 LevelDB 进行抽样验证,确保 GaussDB (forRedis) 加载数据正确。
- 服务切换:当增量迁徙进入序幕时,将服务切换到 GaussDB(for Redis)。
2.3 应用须知
- 迁徙工具须要部署在源端,对性能有肯定耗费,可通过批改配置文件进行肯定的管制。
- 迁徙过程读取 LevelDB 的源数据文件,只读操作,实践上不会有数据受损危险。
- 迁徙过程不须要停服。
- 若迁徙过程呈现故障,须要清理 GaussDB(forRedis) 实例,重新启动迁徙。
3、RocksDB 到 GaussDB(for Redis) 的迁徙
RocksDB 是 FaceBook 基于 LevelDB 开发的一个长久化 KV 单机数据库引擎,具备弱小的程序读写及随机写性能。绝对于 LevelDB,RocksDB 做了许多优化,性能有了很大晋升,而且解决了 LevelDB 被动限度写的问题。作为一个数据库引擎,RocksDB 没有设计成 C/S 网络结构,间接应用须要和服务部署在同一台服务器,对于服务的部署、应用有较大的限度。
GaussDB(for Redis) 采纳 RocksDB 作为存储引擎,兼容 Redis 协定具备丰盛的数据类型,能够满足 RocksDB 的应用需要。同时 GaussDB(for Redis) 对 RocksDB 进行深度定制,实现秒级决裂弹性扩容,扩缩容无需搬迁数据,疾速而平滑,为 RocksDB 业务转到 Redis 生态提供了便当。
3.1 迁徙原理
应用自研迁徙工具 rocksdb-port,和 RocksDB 部署在雷同机器上,筹备好配置文件,启动迁徙即可主动实现全量与增量的迁徙。全量迁徙对 RocksDB 数据进行快照,而后扫描整个数据库,将数据打包成 GaussDB(forRedis) 辨认的格局,发送到 GaussDB(forRedis),具备很高的迁徙效率。增量迁徙解析 RocksDB 的 wal 文件,将 RocksDB 的操作解析进去,而后对其中的 key 进行分片,多线程进行发送。
3.2 前提条件
- 部署迁徙工具 pika-port
-
确保源端 Pika 实例、pika-port 和指标端 GaussDB(for Redis) 实例网络互通。
3.3 操作步骤
- 筹备工作:
- 将 rocksdb-port 部署在 rocksdb 同服务器上,确保与高斯 Redis 网络买通。
- 确保指标端 GaussDB(for Redis) 实例已清空,从安全性思考,对外不提供 flushall 命令,迁徙之前应保障实例内数据已革除。
批改配置文件。 - 启动迁徙:执行命令./rocksdb-port./rocksdb-port.conf
- 跟踪日志,判断迁徙状态:
- 全量迁徙实现,会打印 ”Fullmigrate finished”;
- 增量迁徙定时打印尚未解析的 wal 文件数及尚未发送进来的 kv 数。
- 数据验证:对 RocksDB 进行抽样验证,确保 GaussDB (forRedis) 加载数据正确。
- 服务切换:当增量迁徙进入序幕时,将服务切换到 GaussDB(for Redis)。
3.4 应用须知
- 迁徙工具须要部署在源端,对性能有肯定耗费,可通过批改配置文件进行肯定的管制。
- 迁徙过程读取 RocksDB 的源数据文件,只读操作,实践上不会有数据受损危险。
- 迁徙过程不须要停服。
- 若迁徙过程呈现故障,须要清理 GaussDB(forRedis) 实例,重新启动迁徙。
4、结语
高斯 Redis 在社区版 Redis 的根底上,联合华为自研强统一存储 DFV Pool,具备强统一、秒扩容、超可用、低成本等劣势,保障了计数的准确性、可靠性。
本文作者:华为云高斯 Redis 团队。
杭州西安深圳简历投递:yuwenlong4@huawei.com
更多技术文章,关注高斯 Redis 官网博客:
https://bbs.huaweicloud.com/community/usersnew/id_1614151726110813
点击关注,第一工夫理解华为云陈腐技术~