开发者社区 问答 正文

OceanBase数据库环境本来datafile_size 设的比较大,导致预占太多,为什么?

OceanBase数据库环境本来datafile_size 设的比较大,导致预占太多,想降低此预占配置,并增加配置datafile_maxsize来配合用以进行后续动态扩容。我看之前版本可以手动降低,但是4.x没看到此文档?
https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000059#3-title-%E8%B0%83%E5%B0%8F%20data%20%E7%9B%98%E7%9A%84%E5%8D%A0%E7%94%A8%E5%A4%A7%E5%B0%8F

展开
收起
真的很搞笑 2023-12-12 19:33:32 303 分享 版权
来自: OceanBase
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在OceanBase数据库中,如果datafile_size设置得过大,确实会导致预占用磁盘空间过多的问题。降低此预占用配置以及增加datafile_maxsize以配合进行后续动态扩容的方法具体如下:

    首先,你可以调整datafile_size或者datafile_disk_percentage的大小来降低预占用的磁盘空间。其中,如果你保持datafile_size的默认值为0,可以通过调整datafile_disk_percentage的大小来达到目的。例如,你可以使用以下命令来将datafile_disk_percentage设置为93:

    obclient> ALTER SYSTEM SET datafile_disk_percentage = 93;
    

    需要注意的是,如果datafile_size的值大于0,系统会忽略datafile_disk_percentage的设置。也就是说,datafile_size和datafile_disk_percentage这两个参数是互斥的。

    然后,为了实现后续的动态扩容,你需要增大datafile_maxsize的值以确保磁盘空间的增长上限。你可以通过以下命令来手动设置datafile_maxsize的值:

    obclient> ALTER SYSTEM SET datafile_maxsize = '400G';
    

    请确保你设置的datafile_maxsize的值大于datafile_size的值,或者大于根据比例换算得出的值。此外,OceanBase数据库在版本3.1.4中引入了datafile_next参数来控制磁盘空间的增长步长。你可以在调整datafile_maxsize的同时,也设置这个参数来进一步优化你的数据库配置。

    2023-12-13 12:55:54
    赞同 展开评论
  • 正常的 ob采用预占磁盘空间的方式 是datafile_size 和 log_disk_size 参数控制数据盘和日志盘大小
    这个是检查服务器资源是否满足生产环境使用参数,测试环境建议关闭。
    datafile_size是不支持调小的。 只能调大。
    或者可以把现有环境的数据进行备份,然后重新部署一个集群。从而把datafile_size调小。之后通过备份恢复来恢复数据。 ,此回答整理自钉群“[社区]技术答疑群OceanBase”

    2023-12-13 12:25:57
    赞同 展开评论