使用中的集群如何安全修改 datafile_size,log_disk_size 集群配置项

【 使用环境 】POC验证环境
【 OB or 其他组件 】OB
【 使用版本 】4.3.5.1
【问题描述】POC环境在部署时没有设置 datafile_size,datafile_disk_percentage、log_disk_size 、log_disk_percentage 集群配置项,目前集群数据文件,日志文件均部署在 /data 下使用率91%,现在计划设置 datafile_size,log_disk_size 两个参数?降低到90%以下就可以,调整多少合适?

操作系统使用率如下:
image
image

observer使用率
image

问题1:如果设置的 datafile_size,log_disk_size 略小于实际占用空间会不会有问题?
问题2:ob是否可备份参数文件以免修改失败无法启动,恢复历史参数值?

非常感谢!

@论坛小助手

根据您的问题描述和提供的信息,以下是针对问题的详细解答:

问题1:如果设置的 datafile_sizelog_disk_size 略小于实际占用空间会不会有问题?

回答:
根据文档库中的信息(参考片段标题:配置磁盘数据文件的动态扩容 → 如何启动数据文件的自动扩展),datafile_sizelog_disk_size 的值必须大于当前实际占用的空间大小。否则可能会导致以下问题:

  • 如果设置的值小于实际占用空间,OceanBase 数据库在启动时会检测到磁盘空间不足的问题,并可能报错导致集群无法正常启动。
  • 在运行过程中,当磁盘使用量接近或超过配置的限制时,可能会触发磁盘空间不足的告警,影响业务运行。

因此,建议您将 datafile_sizelog_disk_size 设置为略大于当前实际占用的空间大小。例如,您可以将 datafile_size 设置为当前数据文件占用空间的 1.1 倍,log_disk_size 设置为当前日志文件占用空间的 1.1 倍,以确保有足够的缓冲空间。


问题2:OB 是否可备份参数文件以免修改失败无法启动,恢复历史参数值?

回答:
根据 OceanBase 的设计和操作实践,以下是关于参数备份和恢复的建议:

  1. 参数文件备份:

    • OceanBase 的参数通常存储在配置文件中(如 config.ini 或通过 OBD 部署时的配置文件)。在修改参数之前,您可以手动备份这些配置文件。
    • 如果您是通过 OBD 部署的集群,可以使用以下命令导出当前的集群配置:
      obd cluster config <cluster_name> > backup_config.json
      
      这样可以将当前的配置保存到 backup_config.json 文件中,以便在需要时恢复。
  2. 参数动态调整:

    • 对于部分参数(如 memory_limit_percentagesyslog_level 等),可以通过系统命令动态调整,而无需重启集群。例如:
      ALTER SYSTEM SET memory_limit_percentage = 80;
      
    • 但对于 datafile_sizelog_disk_size 这类磁盘相关的参数,由于它们在 OBServer 启动时生效且不支持动态修改,因此需要重启 OBServer 才能应用新的配置。
  3. 恢复历史参数值:

    • 如果修改参数后集群无法正常启动,您可以从备份的配置文件中恢复原始参数值。
    • 如果是通过 OBD 部署的集群,可以使用以下命令重新加载备份的配置:
      obd cluster config <cluster_name> --apply backup_config.json
      

关于调整参数的具体建议

当前磁盘使用情况分析

根据您提供的图片内容,/data 分区的总容量为 894G,已使用 805G,使用率为 91%。为了降低使用率到 90% 以下,您可以按照以下步骤调整参数:

  1. 计算目标值:

    • /data 分区的目标使用率为 90%,则目标使用量为:
      [
      894G \times 90% = 804.6G
      ]
    • 当前使用量为 805G,略高于目标值,因此需要适当调整 datafile_sizelog_disk_size
  2. 调整参数:

    • 根据当前使用量和目标值,建议将 datafile_sizelog_disk_size 设置为略大于当前实际占用的空间大小。例如:
      datafile_size = 700G
      log_disk_size = 100G
      
    • 具体值可以根据实际业务需求和磁盘分布情况进行微调。
  3. 修改参数并重启 OBServer:

    • 修改配置文件或通过 OBD 更新参数后,重启 OBServer 使新参数生效:
      obd cluster restart <cluster_name>
      

总结

  1. 设置 datafile_sizelog_disk_size 时,必须确保其值大于当前实际占用的空间大小,否则可能导致磁盘空间不足的问题。
  2. 在修改参数前,请备份当前的配置文件或使用 OBD 导出配置,以便在需要时恢复历史参数值。
  3. 根据当前磁盘使用情况,建议将 datafile_sizelog_disk_size 设置为略大于实际占用的空间大小,以确保磁盘使用率降至 90% 以下。

如果您还有其他疑问,欢迎进一步咨询!

具体信息可参考以下文档:

  1. 配置磁盘数据文件的动态扩容
  2. 内存相关参数
  3. BootStrap
  4. OceanBase 数据库性能的影响因素
  5. Redo 日志
  6. syslog_disk_size
  7. 设置日志同步限速
1 个赞

可以看看文档
og_disk_size
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002015772
datafile_size
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013269

1 个赞

学习了

淇铭老师,通过ocp 部署的ob4.3.5.1集群,
1.如何备份相关配置项或参数文件?
2.如何恢复?
以保障datafile_size, log_disk_size 参数修改有问题时进行回退?

1、没有办法备份 你可以写个脚本自己备份一下
2、自己修改前备份一份就可以了

1 个赞

datafile_size 能改大不能改小 ,无法回退
log_disk_size 能改大也能改小。 无需备份吧


老师您好 上图数据盘使用 84.1GB 预分配了 536.29GB
如果datafile_size 改成比如300G,集群启动是否会报错?如果报错可否有办法将 datafile_size 改回到 536.29GB?

官方不建议这么做 ,这个参数只能改大 不能改小, 别尝试了 。

学习学习 :clap: :clap: :clap:

收到,感谢老师

这两篇文档还是有帮助的