OceanBase 数据库预设资源监控点
适用版本:
V2.1.x、V2.2.x、V3.1.x、V3.2.x
内容类型:
TechNote
在 OceanBase 数据库的运维工作中,需要对剩余资源进行预设。本文主要介绍 OceanBase 数据库预设资源的监控点。
适用版本
OceanBase 数据库所有版本
资源监控点
一般情况下,需要为 OceanBase 集群预留 1/N 的系统资源,其中 N 为单个 Zone 中 OBServer 的数量。例如 3-3-3 集群中,需要预留的系统资源为 1/3。
集群资源的监控点包含以下几项:
单 OBServer 的 CPU、内存与数据文件大小均需要预留 1/N 的资源。
检查 OBServer 的 CPU 与 内存是否预留足够资源。
其中 CPU_PER 表示使用 CPU 的百分比,MEM_PER 表示使用内存的百分比。
obclient> SELECT ZONE,SVR_IP,CPU_TOTAL,CPU_ASSIGNED,
ROUND(CPU_ASSIGNED_PERCENT,2) CPU_PER,ROUND(MEM_TOTAL/1024/1024/1024,2) MEM_TOTAL_GB,
ROUND(MEM_ASSIGNED/1024/1024/1024,2) MEM_ASS_GB,MEM_ASSIGNED_PERCENT MEM_PER,
UNIT_NUM,LEADER_COUNT
FROM __ALL_VIRTUAL_SERVER_STAT ORDER BY MEM_PER DESC;
±------±---------------±----------±-------------±--------±-------------±-----------±--------±---------±-------------+
| ZONE | SVR_IP | CPU_TOTAL | CPU_ASSIGNED | CPU_PER | MEM_TOTAL_GB | MEM_ASS_GB | MEM_PER | UNIT_NUM | LEADER_COUNT |
±------±---------------±----------±-------------±--------±-------------±-----------±--------±---------±-------------+
| zone3 | xxx.xx.xxx.xxx | 62 | 2.5 | 4 | 30.00 | 7.50 | 25 | 1 | 0 |
| zone1 | xxx.xx.xxx.xxx | 62 | 2.5 | 4 | 30.00 | 7.50 | 25 | 1 | 1227 |
| zone2 | xxx.xx.xxx.xxx | 62 | 2.5 | 4 | 30.00 | 7.50 | 25 | 1 | 0 |
±------±---------------±----------±-------------±--------±-------------±-----------±--------±---------±-------------+
3 rows in set (0.00 sec)
检查数据文件大小。
其中 TABLE_SIZE_GB 表示数据文件大小。
obclient> SELECT /+READ_CONSISTENCY(WEAK),QUERY_TIMEOUT(100000000)/
A.ZONE,A.SVR_IP,ROUND(SUM(A.DATA_SIZE) / 1024 / 1024 / 1024, 2) TABLE_SIZE_GB
FROM __ALL_VIRTUAL_META_TABLE A, __ALL_VIRTUAL_TABLE B, __ALL_TENANT C
WHERE INSTR(A.MEMBER_LIST, A.SVR_IP)>0
AND A.TENANT_ID = B.TENANT_ID
AND A.TABLE_ID = B.TABLE_ID
AND B.TENANT_ID = C.TENANT_ID
GROUP BY A.ZONE,A.SVR_IP
ORDER BY A.ZONE,A.SVR_IP, TABLE_SIZE_GB DESC;
±------±---------------±--------------+
| ZONE | SVR_IP | TABLE_SIZE_GB |
±------±---------------±--------------+
| zone1 | xxx.xx.xxx.xxx | 15.27 |
| zone2 | xxx.xx.xxx.xxx | 15.28 |
| zone3 | xxx.xx.xxx.xxx | 14.93 |
±------±---------------±--------------+
3 rows in set (0.03 sec)
检查磁盘使用率。
查询单个表的数据
SELECT /+READ_CONSISTENCY(WEAK),QUERY_TIMEOUT(100000000)/
B.table_name,ROUND(SUM(A.DATA_SIZE) / 1024 / 1024 / 1024, 2) TABLE_SIZE_GB
FROM __ALL_VIRTUAL_META_TABLE A, __ALL_VIRTUAL_TABLE B, __ALL_TENANT C
WHERE INSTR(A.MEMBER_LIST, A.SVR_IP)>0
AND A.ROLE=1
AND A.TENANT_ID = B.TENANT_ID
AND A.TABLE_ID = B.TABLE_ID
AND B.TENANT_ID = C.TENANT_ID
GROUP BY B.TABLE_NAME
ORDER BY B.table_name;
查询单个表单个分区的数据,role=1 指的是leader,role=2 指的是follower
SELECT /+READ_CONSISTENCY(WEAK),QUERY_TIMEOUT(100000000)/
A.ZONE,A.SVR_IP,A.role,B.table_name,A.partition_id,ROUND(A.DATA_SIZE / 1024 / 1024 / 1024, 2) TABLE_SIZE_GB
FROM __ALL_VIRTUAL_META_TABLE A, __ALL_VIRTUAL_TABLE B, __ALL_TENANT C
WHERE INSTR(A.MEMBER_LIST, A.SVR_IP)>0
AND A.ROLE=1
AND A.TENANT_ID = B.TENANT_ID
AND A.TABLE_ID = B.TABLE_ID
AND B.TENANT_ID = C.TENANT_ID
ORDER BY B.table_name;
其中 USED_PERCENT 表示磁盘使用百分比。
obclient> SELECT /+READ_CONSISTENCY(WEAK),QUERY_TIMEOUT(100000000)/
B.ZONE, A.SVR_IP,A.SVR_PORT,B.WITH_ROOTSERVER,
ROUND(A.TOTAL_SIZE/1024/1024/1024,0) AS TOTAL_GB,
ROUND(A.FREE_SIZE/1024/1024/1024,0) AS FREE_GB,
ROUND((A.TOTAL_SIZE-A.FREE_SIZE)/1024/1024/1024,0) AS USED_GB,
(A.TOTAL_SIZE-A.FREE_SIZE)/A.TOTAL_SIZE AS USED_PERCENT
FROM __ALL_VIRTUAL_DISK_STAT A, __ALL_SERVER B
WHERE A.SVR_IP=B.SVR_IP AND A.SVR_PORT=B.SVR_PORT
ORDER BY B.ZONE,USED_PERCENT DESC;
±------±---------------±---------±----------------±---------±--------±--------±-------------+
| ZONE | SVR_IP | SVR_PORT | WITH_ROOTSERVER | TOTAL_GB | FREE_GB | USED_GB | USED_PERCENT |
±------±---------------±---------±----------------±---------±--------±--------±-------------+
| zone1 | xxx.xx.xxx.xxx | 2882 | 1 | 167 | 167 | 0 | 0.0014 |
| zone2 | xxx.xx.xxx.xxx | 2882 | 0 | 167 | 167 | 0 | 0.0014 |
| zone3 | xxx.xx.xxx.xxx | 2882 | 0 | 167 | 167 | 0 | 0.0014 |
±------±---------------±---------±----------------±---------±--------±--------±-------------+
3 rows in set (0.01 sec)
集群中分区数量之和不大于 3 万。
单 OBServer 的线程数与租户的资源单元中的 min_cpu 与 max_cpu 相关,如果已经为单 OBServer 预留了 1/N 的 CPU,则该检查点可以忽略。
单 OBServer 操作系统的网络吞吐量、磁盘的 MBPS 与 IOPS 与 CPU 荷载量。
网络吞吐量:通过 tsar 命令检查。
磁盘 MBPS 与 IOPS:通过 io_stat 命令检查。
CPU 荷载:通过 top 命令检查。




