当前位置: 首页 > news >正文

GBase 8c DN节点扩容缩容使用解析

在生产环境中,用户会面临业务需求增长时,系统自动增加数据库节点以保证计算存储能力。在业务需求下降时,系统自动减少数据库节点以节约成本。

一、概述

GBase 8c 数据库支持对于数据节点的在线扩缩容操作。

  1. gha_ctl 提供扩缩容接口,支持对 datanode 节点进行扩容及缩容操作。
  2. 在进行扩缩容期间,集群能对现有数据表进行正常的读写操作。
  3. 扩缩容后,需保证数据库集群的数据一致性。在进行扩容时,将既存节点的数据迁移一部分到新加入节点,进行缩容时,将删除节点的数据迁移到保留节点上。
  4. 支持 Replication 表的在线扩容缩容。
  5. 支持 hashbucket 表的在线扩容缩容。

注意:扩容后 DN 高可用组的副本数应保持一致,否则存在风险。

二、扩容

操作步骤

GBase 8c 数据库集群扩容的步骤如下:

(1) 在新增节点的主机上配置集群节点间互信。生成新主机密钥并传至其他所有节点:

ssh-keygen -t rsa ssh-copy-id root@ip ssh-copy-id gbase@ip

注意:该步骤必须配置并检查,如配置互信过程出错,可能影响后续步骤。

(2) 在集群中添加新增节点的 IP,在 DCS 节点上执行命令:

gha_ctl deploy host_ip -l http://​dcs_ip:2379

执行返回以下信息,即为操作成功,

{ "ret":0, "msg":"Success" }

(3) 执行扩容命令。

将原集群的 M 个 DN 主备组扩容为 N 个主备组(N>M),将新增加的每一个主备组信息用一组引号单独括起来,每个主备的信息是 DN 组名 + 用括号括起来的所有主备节点的信息,一个节点用一个括号。语法如下:

gha_ctl expand datanode 'new_group1 (name1_1 host1_1 port1_1 dir1_1 agent_port1_1 agent_host1_1) (name1_2 host1_2 port1_2 dir1_2 agent_port1_2 agent_host1_2)' 'new_group2 (name2_1 host2_1 port2_1 dir2_1 agent_port2_1 agent_host2_1) (name2_2 host2_2 port2_2 dir2_2 agent_port2_2 agent_host2_2)' ['...'] -l dcslist [-c cluster] -u uuid -j parallel_num [-a/--action retry|rollback] -U/--user user_name -W/ --password password

其中参数说明:

  • new_group:指定新增高可用组的名称。可根据需要,同时扩充多个高可用组。
  • name:指定高可用组内的 DN 节点名称,一般格式应为 dn[数字]_[数字]。
  • host:指定扩容高可用组内对应 DN 节点的 IP。
  • port:指定对应 DN 节点的端口号。同高可用组内端口需一致。当资源限制需重复使用同一节点,在不同高可用组内分别承担主备角色时,需将两个高可用组端口设置不同,避免端口复用而报错。
  • dir:指定对应 DN 节点的存储路径。
  • agent_port:指定对应 DN 节点的代理端口号。
  • agent_host:为可选参数。缺省值为 host 参数值。指定 DN 节点控制面 IP。
  • -u uuid:通过唯一标识指定数据库。uuid 可以用如下命令生成:
cat /proc/sys/kernel/random/uuid
  • -j parallel_num:指定扩容时并行执行参数,多表同时执行重分布。默认值为 1。
  • -a,--action:指定扩容失败后的动作,可选值为 retry、rollback,分别表示失败后重试、失败后回退。
  • -U, --user:指定连接的数据库用户。
  • -W, --password:指定数据库用户的登录密码。

限制

为避免数据库扩容过程中可能出现的数据丢失问题,扩容新增的节点必须是按照组名排序后,处在最后的分片。

示例
示例一:扩容 DN2 高可用组,组内主节点为 10.0.7.6,备节点 10.0.7.7。

cat /proc/sys/kernel/random/uuid 40ac7d83-6be3-486c-83c4-8942a16d3590 gha_ctl expand datanode 'dn2 (dn2_1 10.0.7.6 15466 /home/gbase/data/dn2_1 8011 10.0.7.6) (dn2_2 10.0.7.7 15466 /home/gbase/data/dn2_2 8012 10.0.7.7) ' -l http://10.0.7.7:2379 -u 40ac7d83-6be3-486c-83c4-8942a16d3590 -U testadmin -W 'Gbase,123'

返回以下信息,表示扩容成功

{ "ret":0, "msg":"Success" }

查看数据库集群状态

gha_ctl monitor all -H -l** **http://10.0.7.7:2379 +----+-------------+----------+-------+---------+--------+ | No | name | host | port | state | leader | +----+-------------+----------+-------+---------+--------+ | 0 | gha_server1 | 10.0.7.7 | 20001 | running | True | +----+-------------+----------+-------+---------+--------+ +----+------+----------+------+---------------------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------+------+---------------------------+---------+---------+ | 0 | gtm1 | 10.0.7.7 | 6666 | /home/gbase/data/gtm/gtm1 | running | primary | | 1 | gtm2 | 10.0.7.8 | 6666 | /home/gbase/data/gtm/gtm2 | running | standby | +----+------+----------+------+---------------------------+---------+---------+ +----+------+----------+------+----------------------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------+------+----------------------------+---------+---------+ | 0 | cn1 | 10.0.7.7 | 5432 | /home/gbase/data/coord/cn1 | running | primary | | 1 | cn2 | 10.0.7.8 | 5432 | /home/gbase/data/coord/cn2 | running | primary | +----+------+----------+------+----------------------------+---------+---------+ +----+-------+-------+----------+-------+----------------------------+---------+---------+ | No | group | name | host | port | work_dir | state | role | +----+-------+-------+----------+-------+----------------------------+---------+---------+ | 0 | dn1 | dn1_1 | 10.0.7.7 | 15432 | /home/gbase/data/dn1/dn1_1 | running | primary | | 1 | dn1 | dn1_2 | 10.0.7.8 | 15432 | /home/gbase/data/dn1/dn1_2 | running | standby | +----+-------+-------+----------+-------+----------------------------+---------+---------+ +----+----------------------+--------+---------+----------+ | No | url | name | state | isLeader | +----+----------------------+--------+---------+----------+ | 0 | http://10.0.7.7:2379 | node_0 | healthy | True | | 1 | http://10.0.7.8:2379 | node_1 | healthy | False | | 2 | http://10.0.7.9:2379 | node_2 | healthy | False | +----+----------------------+--------+---------+----------+

二、缩容

语法格式

gha_ctl shrink datanode del_group1 [del_group2 ...] -l dcslist [-c cluster] -u uuid -j parallel_num [-a/--action retry|rollback]

将原集群的 M 个 DN 主备组缩容为 N 个主备组(N<M),del_group1, del_group2 为缩容时需要删除的 DN 主备组名称。其他参数说明同上。

限制

为避免数据库缩容过程中可能出现的数据丢失问题,缩容的节点必须是按照组名排序后,处在最后的分片。

示例

gha_ctl shrink datanode dn3 dn4 -l ​http://​10.0.7.7:2379 -u b99ee57c-8b90-4196-896c-19d58bdaae6a

三、查询扩缩容结果

语法格式

gha_ctl get expand latest/history -l ​dcslist ​[-c ​cluster​]

示例

gha_ctl get expand latest -l http://10.0.7.16:2379 gha_ctl get expand history -l http://10.0.7.16:2379
http://www.cnnetsun.cn/news/3102468.html

相关文章:

  • 计算机毕业设计之基于机器学习的商品评论分析系统设计与实现
  • 上海头部GEO平台选哪家合适?2026技术实测、架构分级与工程选型指南
  • 造纸滚筒平衡机
  • 如何打造你的私人云游戏服务器:Sunshine全平台搭建指南
  • Claude Science 让实验笔记本成为产品,Sciverse 要做的是它背后的科学证据数据层
  • 三步解锁加密数据:WechatDecrypt微信聊天记录解密实战指南
  • AWS Wickr企业级端到端加密通信:架构原理、数据留存与部署实战
  • 猫抓浏览器插件:终极网页资源嗅探与下载指南
  • 金融数学和金融工程哪个好就业?理科生报哪个更值?一篇讲清楚
  • OneNote效率革命:OneMore插件终极指南,让笔记管理提升300%
  • 深度解析UnrealPakViewer:Pak文件分析的3大核心技术实现
  • 2026最新华南地区商城小程序开发公司排名,5款亲测好用且省钱!含零代码SAAS、AI编程、源码定制
  • 为什么Python的多线程总是跑不满CPU?
  • 3大AI图像处理工具,让Krita选区效率提升10倍
  • 7款Unity游戏马赛克移除插件:解锁完整游戏体验的终极指南
  • 终极指南:使用SMU Debug Tool深度调试AMD Ryzen处理器底层参数
  • 收藏!AI时代如何选择值得加入的公司?毕业生必看!
  • vLLM推理服务假死排查-多模态缓存幽灵Key导致死循环
  • 江苏公考培训市场“诸神混战”,谁在裸泳谁在真练兵?
  • 从零开始学Linux(三)
  • 板球击球手50分节点破百概率预测模型
  • 中兴光猫工厂模式破解:5分钟开启永久Telnet访问权限
  • 【webview】原生 App 与 H5 双向通信完全指南:JSBridge 原理与实战
  • Linux 【05- scp命令超详细教程】
  • Sunshine游戏串流主机:三步打造你的私人游戏云,彻底告别延迟困扰
  • Sunshine游戏串流终极指南:三步打造你的私人云游戏服务器
  • claude code 开发实践 - 生产级别的项目规范
  • 东芝TC78H653FTG与PIC18LF46K22的直流电机驱动方案
  • 科普漫画:散热器的临终独白:我不是被热死的,我是被闷死的
  • AI 生成中文海报为何频现“乱码”:文字渲染的技术瓶颈与优化路径