OceanBase 是一个多租户的分布式数据库,统计数据量时需要考虑一台服务器上可能会有多个租户,每个租户会有多个副本。此外 OceanBase 中磁盘上的数据文件是预分配的,当我们统计数据量大小时,得找出真实数据占用的大小。我们需要考虑:
- OceanBase 不同版本(V3、V4)的统计方式有何区别?
- 不同级别(服务器级、租户级、表级)如何统计?
本文将总结在 OceanBase 中统计数据量大小的技巧,旨在扫清这方面的迷雾。
服务器级别
OCP 统计
OCP 上“集群总览”展示的数据量是集群中每个 OBServer 服务器的磁盘容量大小和已使用大小。通过这个信息我们可以快速知道整个集群大概的数据量,以及每台服务器上的存储是否够用。

比如上图中 xxx.xxx.xxx.193 服务器显示的 2.5TB/16.8TB 含义如下:
- 16.8TB:表示的是 OBServer 上用
datafile_size或者datafile_disk_percentage参数指定的可以使用的存储大小,也就是/data/1/{cluster_name}/sstable/block_file数据文件的大小。- OceanBase 的数据文件是预分配的,在安装数据库后数据文件
block_file的大小就已经预留好了,后续的写入不会改变文件大小。
- OceanBase 的数据文件是预分配的,在安装数据库后数据文件
- 2.5TB:表示
block_file数据文件中真实数据的大小,剩余都是可用空间。
磁盘统计
对应服务器上看到的磁盘使用量就是 block_file 数据文件的大小,和 OCP 上“集群总览”展示的一致:
df -h |grep /data/1
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/observervg-obdata 24T 17T 7.1T 71% /data/1
ll /data/1/group_x86_pt01/sstable/
total 17T
-rw-r----- 1 admin admin 17T Jan 18 01:31 block_file
视图统计
OCP 展示的数据实际上来自系统视图 __all_virtual_disk_stat,因此如果没有 OCP,也可以通过查询系统视图得到这个数据:
适用 V3、V4 版本,在 sys 租户下执行。
SELECT
svr_ip,
svr_port,
total_size / 1024 / 1024 / 1024 AS total_size_GB,
free_size / 1024 / 1024 / 1024 AS free_size_GB,
(total_size - free_size) / 1024 / 1024 / 1024 as used_size_GB
FROM
__all_virtual_disk_stat;
+----------------+----------+--------------------+--------------------+-------------------+
| svr_ip | svr_port | total_size_GB | free_size_GB | used_size_GB |
+----------------+----------+-----------

最低0.47元/天 解锁文章

1937

被折叠的 条评论
为什么被折叠?



