OceanBase 的磁盘数据文件分配方式有两种:
- 手动分配
- 自动分配
手动分配是指通过启动配置项,或配置文件,显式地指定 Observer 需要的磁盘空间。例如 datafile_size/datafile_disk_percentage 配置项,其中 datafile_size 表示使用的固定大小,datafile_disk_percentage 表示使用磁盘的比例。
OceanBase 在 4.2 之后的版本上支持磁盘数据文件的自动分配,是指通过配置集群级的可用磁盘的初始大小以及最大上限,如 datafile_maxsize。在集群运行过程中自动判断当前所使用的磁盘空间是否需要扩展,并可配置每次自动扩展的大小,如 datafile_next。
上述两种方式有各自的优势和缺点。
| 磁盘文件分配方式 | 优点 | 缺点 |
|---|---|---|
| 自动分配 | 渐进分配,磁盘空间线性增长 | 在机器不能独占的情况下,不能保证一定能扩展到 max 空间 |
| 手动分配 | 一次分配,保证占用预置的磁盘空间 | 在磁盘预设较大的情况下,可能存在一定的空间浪费 |
配置项
| 配置项 | 含义 |
|---|---|
| datafile_size | block_file 文件大小 |
| dataflie_disk_percentage | block_file 文件占磁盘比例 |
| datafile_maxsize | block_file 自动增长上限 |
| datafile_next | block_file 自动增长步长 |
其中,datafile_size 是一个集群级别的配置项,如果不配置,默认为 0,此时会按照磁盘是否共享模式(clog 和 block_file 同一个盘)分别分配 90%(独占)和 60%(共享)的 datafile_size 磁盘空间。datafile_maxsize 是磁盘数据文件自动扩展的配置项,当该值大于 datafile_size 值,并且 datafile_next 不为 0 时,表示启动自动扩展。
适用版本
OceanBase 数据库 V4.x 版本。