oceanbase集群磁盘,数据目录扩容

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】5.7.25-OceanBase_CE-v4.1.0.0
【问题描述】三个节点怎么磁盘扩容
系统是在Kylin Linux Advanced Server release V10 (Sword) 部署的oceanbase集群。目前出现了4181写入拒绝。使用ALTER SYSTEM SET datafile_disk_percentage = 85;临时恢复了使用,后面需要操作磁盘扩容。从原有的1T 扩充到1.5T ,我应该怎么操作,风险才是最低的呢?使用的云ecs 服务器部署的,服务器不支持动态扩容。需要关机重启。

4 个赞

你之前使用逻辑卷的方式挂载的磁盘么?df -h 看一下

1 个赞

@论坛小助手

2 个赞

看起来您正在寻求关于如何在OceanBase集群中执行磁盘扩容的操作建议,特别是针对您提到的环境——Kylin Linux Advanced Server V10 (Sword) 上部署的三节点OceanBase集群。根据您的情况,由于云ECS服务器不支持动态扩容,需要通过关机重启来完成此操作。以下是我基于文档和常规实践给出的一些建议:

一、准备阶段

  1. 备份数据:尽管您计划进行的是物理层面的操作,但始终强烈推荐在任何可能导致系统中断或改变状态的操作之前,先执行一次全量的数据备份。
  2. 检查现有配置
    • 使用 df -h 命令查看当前磁盘使用情况及挂载点。
    • 确认当前是否已经采用了逻辑卷管理(LVM),这将影响具体的扩容步骤。

二、扩容步骤(假设采用LVM)

如果您的系统是通过LVM管理磁盘空间的,那么可以按照以下步骤操作:

1. 扩容ECS实例存储容量

  • 在云服务提供商的控制台中增加ECS实例的磁盘大小到1.5T。这一步通常需要您暂时停止ECS实例。

2. 更新操作系统识别新的磁盘空间

  • 启动ECS实例后,可能需要手动让Linux系统重新扫描并识别新增的磁盘空间。对于某些云平台,这可以通过简单的命令如 partprobe 或重启服务器实现。
  • 再次使用 df -hpvdisplay 检查磁盘和物理卷的状态。

3. 扩展物理卷

  • 如果新添加的空间未自动加入现有物理卷,则需使用 pvresize /dev/sdX 来扩展对应的物理卷。其中 /dev/sdX 是要调整的具体设备名,请替换为实际使用的名称。

4. 扩展逻辑卷

  • 接下来使用 lvextend -l +100%FREE /dev/mapper/ob_data_lv 将所有可用空间分配给目标逻辑卷。请确保这里的路径与您实际情况匹配。

5. 调整文件系统大小

  • 最后一步是对位于该逻辑卷上的文件系统进行调整,以充分利用扩大的空间。这通常涉及 xfs_growfs /path/to/mountpoint 对于XFS文件系统,或 resize2fs /dev/mapper/ob_data_lv 对于ext系列文件系统。

三、注意事项

  • 停机时间规划:整个过程需要停机执行,应选择业务低谷时段减少对业务的影响。
  • 测试恢复流程:在实际操作前,最好在相似环境下先行测试一遍完整的恢复流程。
  • 监控告警设置:扩容完成后,密切监测数据库性能指标变化,并确保告警机制有效运作。

以上指导基于一般性的理解和处理方法,具体实施时还请您结合实际情况以及官方文档指南进一步验证每一步骤。如果有更多细节或其他问题,欢迎继续询问!

详情请参考:

  1. HELP
  2. ha_low_thread_score
  3. 向量检索实践教程概述
  4. ha_mid_thread_score
  5. 系统视图总览
  6. 遇到问题如何向技术支持同学提问
  7. ha_high_thread_score
  8. 基于 OceanBase 构建智能问答机器人
  9. ALTER USER
2 个赞

那你这扩容 首先要停ob集群了 才能扩容了

2 个赞

需要停止整个集群吗?
不能单节点轮流操作?

1 个赞

单节点轮流应该也是可以的

2 个赞

就是比较疑问,怎么保证数据的一致。

2 个赞

1-1-1 = 三个 Zone 各一个 Full 副本,同一日志流有 3 个 Paxos 成员。

  • 事务 Commit 要求 clog 多数派落盘(至少 2/3)才返回成功。
  • 停掉 1 台后,剩下 2 台仍是多数派,已提交日志在剩余副本里完整,不丢数据。
  • 若停的是 Leader,剩余 Follower 会自动选主(通常约 8s 内),且多数派机制保证不会脑裂。
2 个赞

老师,那就是我需要在操作节点的时候,先使用 ALTER SYSTEM STOP SERVER 迁走 Leader,然后在把要操作的节点上的observer停止,然后服务器关机,扩容完成之后,启动 observer 进程,然后’‘ALTER SYSTEM START SERVER’恢复服务,等他自己同步完成数据?然后在操作下一个节点?有个疑问的地方:配置的datafile_disk_percentage=80,我操作的节点扩容之后,可用的空间会增大很多。那会影响未操作的俩个节点吗?

2 个赞

那你可以不按照datafile_disk_percentage=80这样设置 你可以datafile_size这样 你先计算一下 目前使用了多少了
– 例如:1.5T * 85% ≈ 1275G;若 data/clog 同盘,按实际留足 clog 再定
ALTER SYSTEM SET datafile_size = ‘1275G’;

扩容前预检(sys 租户)

SHOW PARAMETERS LIKE ‘%datafile_%’;
SHOW PARAMETERS LIKE ‘server_permanent_offline_time’;

SELECT * FROM oceanbase.DBA_OB_SERVERS; – 全 ACTIVE,无其他 Stop
SELECT * FROM oceanbase.GV$OB_LOG_STAT; – 副本位点接近
SELECT data_disk_allocated/1024/1024/1024 AS alloc_g,
data_disk_capacity/1024/1024/1024 AS cap_g,
data_disk_in_use/1024/1024/1024 AS used_g
FROM oceanbase.GV$OB_SERVERS;

确认:无 locality 变更、无跨 Zone 已 Stop、日志基本同步。

单节点标准流程(三台各做一遍)

1)隔离
ALTER SYSTEM STOP SERVER ‘ip:2882’; – 失败就停,不要强行关机
– 可选,缩短回放:
ALTER SYSTEM MINOR FREEZE SERVER = (‘ip:2882’);
2)停进程 → 关机

在该节点

kill -9 <observer_pid>
shutdown -h now

3)云控制台把该 ECS 数据盘 1T → 1.5T → 开机
4)Kylin 上扩分区/文件系统(按实际盘符改)
5)拉起并恢复服务
cd /home/admin/oceanbase && ./bin/observer
ALTER SYSTEM START SERVER ‘ip:2882’;
– 确认 STOP_TIME 为 NULL,START_SERVICE_TIME 有值,日志追上后再做下一台

三台 OS 都扩到 后:调大 OB datafile(关键)

检查
SELECT svr_ip,
data_disk_allocated/1024/1024/1024 AS alloc_g,
data_disk_capacity/1024/1024/1024 AS cap_g
FROM oceanbase.GV$OB_SERVERS;

SELECT * FROM oceanbase.__all_virtual_disk_stat;

1 个赞

日志盘是独立的。就是我的/dev/vdc1

1 个赞

还要个问题,如果我想同步升级内存的话,影响大吗?

1 个赞

或者是采取整个集群停止的方式,我还是只能一个节点一个节点的操作停机吗?

1 个赞

建议先把磁盘弄好以后 在动态扩容内存 就好了 如果云服务器的内存小 也可以扩展

1 个赞

云ECS服务器应该是支持动态扩容吧

打卡打卡

1 个赞

老师,就是我实际操作的时候,遇到一个问题:执行了ALTER SYSTEM STOP SERVER ‘ip:2882’;以及ALTER SYSTEM MINOR FREEZE SERVER = (‘ip:2882’);之后,使用SELECT svr_ip, status, stop_time
FROM oceanbase.DBA_OB_SERVERS
WHERE svr_ip = ‘’;查询时,出现stop_time y有值,但是status一直显示active,40分钟后还是显示active,没有出现STOPPED,我便中止了操作,因为SHOW PARAMETERS LIKE ‘server_permanent_offline_time’;默认配置了1小时。
这中间是有什么问题吗?status 一直没有变化

1 个赞

学习

没有问题 其实还是active 这是个正常的