IvorySQL内核的Serverless数据库——HGNeon适配国内云对象存储
了
📕前言
HGNeon数据库内核使用开源IvorySQL,同时支持pg14和pg15,整体架构分为计算层和存储层。计算层由运行在Kubernetes上的无状态IvorySQL组成,允许pod按需扩展,甚至可以缩容到零。存储层是通过HGNeon存储引擎实现的,这是一个处理事务和数据的定制层。事务日志通过一组冗余的safekeeper进行处理,数据页则由pageserver在磁盘上进行管理,而数据真正的持久化由云存储保证。
🎄环境准备
1.准备k8s环境v1.23。
2.准备阿里云账号,开通OSS服务,创建一个桶(Bucket),创建账号ak、sk,授权OSS。
3.准备HGNeon项目代码(用neon的项目代码部署原理和效果是相同的)。
🔨HGNeon搭建
1.拉取git项目代码。
2.创建分支 git checkout -b compatible-with-oss。
3.到K8s_deploy目录下。
4.配置存储节点启动时,使用阿里云OSS服务信息
把yml中pageserver、safekeeper1、safekeeper2、safekeeper3的ak和sk都换成阿里云账号。
5.vim ./HGNeon_core/scripts/hgneonstorage.sh
修改pageserver和safekeeper的启动命令,增加remote-storage信息。
6.remote-storage结构信息来源。
📍endpoint:阿里云OSS页面可以查询到Bucket域名信息。(注意:请勿使用Endpoint信息)
📍bucket_name:桶的名字,支持自定义。
📍bucket_region:区域id,详细对应关系,请参考阿里云官方文档。
https://help.aliyun.com/document_detail/31837.htm?spm=a2c4g.410748.0.0.28ad27a2Nk8cXQ#concept-zt4-cvy-5db
📍prefix_in_bucket:无需修改,桶目录管理路径。
7.到k8s_deploy目录下。
8.先启动存储节点,启动完成后可以看到2个configMap、2个service、1个deployment。
./HGNeon_k8s_setup.sh start
9.存储节点启动完成后,启动第一个计算节点,启动后有1个pod、3个service、1个deployment。
./HGNeon_k8s_setup.sh startcompute 1 30081
命令中的参数:
1 是计算节点的id,任意不重复的数字即可(与tenantid和timeline是绑定的)
30081 指的宿主机端口号,不冲突即可。
10.启动第二个计算节点。
./HGNeon_k8s_setup.sh startcompute 2 30082
11.Psql测试登录,用户cloud_admin密码也是cloud_admin。
psql -h 127.0.0.1 -U cloud_admin -d postgres -p 30081
1.连接数据库,建表,插入数据,查询。
2.查看阿里云OSS情况。
⚙压测工具可用性测试
无服务数据库HGNeon能否正常使用基准测试工具进行测试?
本次测试选用BenchmarkSQL压测工具作为示例,验证HGNeon的压测工具可用性。
1.安装BenchmarkSQL 5.0,官方下载.zip文件,解压后ant编译。
2.修改连接配置信息。
到BenchmarkSQL的run目录下
cat props.pg > hgneon.conf
vim hgneon.conf
3.导入数据。
./runDatabaseBuild.sh hgneon.conf
4.压测。
./runBenchmark.sh hgneon.conf
5.测试完成。
🏆总结
本次测试验证结论:
1.HGNeon可以适配国内云平台OSS,并具有较强的可靠性和稳定性。
官方网址:
https://www.ivorysql.org/zh-cn/
社区仓库:
https://github.com/IvorySQL/IvorySQL
🐘点击蓝字 跳转 GitHub