生产环境OB资源隔离

【 使用环境 】生产环境
【 OB or 其他组件 】OBserver
【 使用版本 】V4.4.2
【问题描述】OCP在创建租户的时候可以限制CPU、内存、日志使用量以及IOPS,但是没有限制空间大小的配置,像oracle有表空间和数据文件限制,块为8k的情况下,一个数据文件最大32GB,这样就可以避免当应用程序异常频繁写入数据导致将整个集群写满的情况,问问大家生产环境针对空间这块是怎么考虑的呢

@论坛小助手

生产环境OB资源隔离

根据您的描述,您希望了解在OceanBase的生产环境中如何管理租户的空间使用,特别是当应用程序异常频繁写入数据时如何避免集群被写满的情况。虽然OCP在创建租户时支持设置CPU、内存、日志使用量以及IOPS等资源限制,但确实没有直接提供空间大小的配置选项,与Oracle数据库通过表空间和数据文件来限制存储空间的方式不同。

解决方案建议:

  1. 使用单位(Unit)规格定义:
    从设计上,自V4.0.0版本起,OceanBase数据库支持租户间包括但不限于CPU、内存、IOPS乃至日志盘大小(log_disk_size)在内的资源隔离。您可以为每个租户设定相应的资源单元(Unit)规格,在此规格中明确指出允许的最大磁盘日志大小。这虽然不完全等同于限制实际的数据存储空间,但是间接控制了租户对磁盘的占用。参考文档片段3提供了关于创建Resource Unit的具体SQL命令示例:

    obclient> CREATE RESOURCE UNIT name
    MAX_CPU = 1, [MIN_CPU = 1,]
    MEMORY_SIZE = '5G',
    [MAX_IOPS = 1024, MIN_IOPS = 1024, IOPS_WEIGHT=0,]
    [LOG_DISK_SIZE = '2G'];
    
  2. 增加监控告警机制:
    利用OCP或外部监控工具密切监控各租户的数据增长情况。一旦发现某个租户的数据增长异常快速或者接近其预设上限时,立即触发告警通知DBA进行干预。这样可以在一定程度上防止因单一应用故障而造成整个集群存储耗尽的问题。

  3. 定期审查及优化:
    定期对数据库中的大表进行审查,并考虑实施分区策略或其他优化手段来分散存储压力。同时检查是否有未被有效清理的历史数据,及时删除不再需要的信息。

  4. 扩展集群容量:
    在预计到存储即将达到瓶颈前,提前规划并执行集群扩容操作,包括添加更多Observer节点或增大现有节点的磁盘容量。

综上所述,虽然OceanBase当前版本未能直接提供类似Oracle那样的严格表空间配额管理功能,但通过上述措施结合适当的管理和维护实践,同样可以有效地控制租户的空间使用,从而保障集群的整体稳定性和安全性。如果这些方法仍不能满足您的需求,请考虑联系OceanBase的技术支持团队寻求进一步的帮助。

更多信息请查看:

  1. 主机规划
  2. 租户间的资源隔离
  3. OCP V4.2.0
  4. 产品 FAQ
  5. 磁盘及目录规划
  6. 常见监控指标问题
  7. 扩容 OceanBase 集群及租户