调整租户unit规格

【 使用环境 】生产环境
【 OB or 其他组件 】ocp 4.4.0 ob 4.3.5.5
【 使用版本 】
【问题描述】如果我现在要把126G改成100G,会有问题吗,如何安全调小租户unit规格。
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)


【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

6 个赞

在生产环境中调整租户Unit规格是一个需要谨慎处理的操作,尤其是在涉及到减小Unit的存储空间时。这一步操作不当可能会导致数据丢失或其他问题。为了安全地执行此操作并确保整个过程顺利进行,我们建议首先利用 obdiag 工具来采集当前OceanBase集群的基础信息以及与租户相关的详细情况,从而评估是否可以执行该操作而不影响服务稳定性。

日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

这条命令可以帮助收集有关集群状态的关键信息,包括但不限于租户配置、资源使用情况等,这对您即将进行的操作来说是很有帮助的。请先运行上述命令,并将生成的日志文件提供给我们,以便我们可以进一步检查是否有潜在风险存在。

此外,在进行实际调整之前,请您回答以下几个问题以帮助我们更好地理解您的环境和需求:

  1. 当前租户下最大的数据库表大小是多少?目的是确认是否有足够空间完成这次缩减。
  2. 您是否已经设置了足够的预留空间(比如设置合理的unit内存水位线),以防止因资源紧张而导致的问题?
  3. 能否告知计划中具体如何逐步降低规格值?例如,是一次性从126G减少到100G还是分多次逐步递减?
  4. 是否有考虑过或已经采取了哪些预防措施来保障业务连续性不受影响?例如是否有备份策略?
  5. 通常情况下,这个租户每天的数据增长量大概是多少?

通过上述信息,我们将能够为您提供更具体的指导和建议。

附上敏捷诊断工具 obdiag 使用帮助链接

6 个赞

不知道集群访问比较热的话会不会有问题,反正我这里ob多写少读的情况下都是直接调的没碰到问题

6 个赞

没有问题,完全可以改

4 个赞

要调整节点的内存大小么?

4 个赞

对,想调小一点,看文档说调整后大小需要大于当前已占用内存

5 个赞

调大简单,调小要多方面考虑下

3 个赞

调小内存应该还好吧。

1 个赞

:smiley: :smiley: :smiley: :smiley:

顶一下

半夜调,没毛病。

关于obdiag的问题,scene确实是一个重要的考虑因素。在实际应用中,我发现调整租户unit规格方法通常更有效。

1 个赞

– 对目标租户触发 minor freeze(按你们版本文档选择合适方式)
ALTER SYSTEM MINOR FREEZE TENANT = ‘zone0’;
– 或按文档手动触发转储 等待转储完成,确认 memstore_used 进一步下降。
方式 A:OCP 控制台(你截图里的「编辑」)
方式 B:SQL(sys 租户)

– 1. 查看当前规格名
SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS
WHERE UNIT_CONFIG_ID = (
SELECT UNIT_CONFIG_ID FROM oceanbase.DBA_OB_RESOURCE_POOLS
WHERE TENANT_ID = 1002 LIMIT 1
);
– 2. 修改(假设 unit 名为 zone0_unit_config,按实际名称替换)
ALTER RESOURCE UNIT <unit_config_name>
MEMORY_SIZE = ‘100G’;
– CPU/IOPS/LOG_DISK 不变可不写

若多租户共用规格:
CREATE RESOURCE UNIT zone0_100g_unit
MAX_CPU = 64, MIN_CPU = 64,
MEMORY_SIZE = ‘100G’,
MAX_IOPS = 128, MIN_IOPS = 128,
LOG_DISK_SIZE = ‘378G’;

ALTER RESOURCE POOL <pool_name> UNIT = ‘zone0_100g_unit’;

–变更后验证
– 1. 规格是否生效
SELECT * FROM oceanbase.GV$OB_UNITS WHERE TENANT_ID = 1002;

– 2. memstore 新上限
SELECT tenant_id, svr_ip,
ROUND(memstore_used/1024/1024/1024, 2) AS used_gb,
ROUND(memstore_limit/1024/1024/1024, 2) AS limit_gb
FROM oceanbase.GV$OB_MEMSTORE
WHERE tenant_id = 1002;

– 3. 租户任务是否完成
SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS
WHERE TENANT_ID = 1002 ORDER BY JOB_ID DESC LIMIT 5;

1 个赞