#CPU资源管理
YashanDB CPU资源管理用于保证数据库在稳定运行的前提下,保障核心用户的使用和紧急任务的运行及最大限度提高CPU整体资源的利用率。
目前,YashanDB CPU资源管理支持于单机主备部署(非级联备)中使用,且适用于LINUX和ARM平台。 资源管理功能按节点生效,如果配置CPU资源上限20%,则每个节点可使用上限是20%。
开启CPU资源管理功能须执行如下两个步骤:
- 使用yasboot工具安装部署数据库并创建资源管理目录,yasboot工具详细参数说明请参考安装部署命令章节。
- 调用DBMS_RESOURCE_MANAGER高级包执行资源管理命令,高级包相关命令说明请参考DBMS_RESOURCE_MANAGER章节。
# 核心概念
# 资源使用组
资源使用组由许多用户会话组成,这些会话具有相同的资源使用请求。 其中 SYS_GROUP 和 DEFAULT_CONSUMER_GROUP 为系统创建的默认资源使用组。
新创建一个会话时,YashanDB根据设定会自动把它分配到DEFAULT_CONSUMER_GROUP组中,数据库管理员还可以手动调整某个会话所属的资源组。
# 资源计划指令
资源计划指令是对YashanDB数据库服务资源组合的描述,通过对数据库内部资源进行分配,并于数据库各节点上生效。
# 资源映射
资源映射指的是将用户映射到资源使用组,映射属性仅支持为USER。
Note:
- 一个用户仅能映射到一个资源使用组中,但一个资源使用组可包含多个用户。
- 一个资源使用组仅能对应一个资源计划指令,但一个资源计划指令可对应多个资源使用组。
# 操作步骤
# 开启资源管理
开启资源管理。
安装YashanDB时开启
CPU资源管理功能支持安装产品的同时开启,在YashanDB安装中的
Step1:生成部署文件
时,通过增加--create-cgroup
选项创建资源管理的cgroup目录。如下为开启CPU资源管理功能的单机数据库部署命令:
$ yasboot package se gen --cluster yashandb -u yashan -p password --ip 192.168.1.2 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data --begin-port 1688 --create-cgroup --sudo-username yashan --sudo-password password
在已安装的YashanDB上开启
如需在已经部署成功的数据库上开启CPU资源管理功能,需通过yasboot工具的
host cgroup create
命令创建cgroup目录,详细参数说明参考一键开启命令章节。创建资源管理cgroup目录后,还需重启数据库,如下为详细操作步骤:
# 创建集群所有主机的资源管理cgroup目录,其中yashandb为部署的集群名称,sudo-username须为具有sudo权限的ssh用户 $ yasboot host cgroup create --cluster yashandb --sudo-username yashan --sudo-password ssh密码 # 如果已经建立了资源组和资源指令,则需要重启数据库使得资源管理功能生效 $ yasboot cluster restart --cluster yashandb
创建用户。
CREATE USER RMUSER IDENTIFIED BY RMUSER DEFAULT TABLESPACE SYSTEM; GRANT dba TO RMUSER;
创建资源使用组。
--创建名为RESMANGROUP的资源使用组,只有SYS用户才有权限执行 BEGIN DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('RESMANGROUP',''); END; /
创建用户映射关系。
--将用户RMUSER映射到RESMANGROUP资源使用组,只有SYS用户才有权限执行 BEGIN DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','RMUSER','RESMANGROUP'); END; /
创建资源计划指令。
--创建名为RESMAN的资源计划指令,该指令表明RESMANGROUP资源使用组拥有11%的CPU共享资源和50%的CPU上限控制 --同样只有SYS用户才有权限执行 BEGIN DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE('RESMAN','RESMANGROUP',11,50); END; /
通过yasboot工具修改
CGROUP_FLAG
参数以开启资源管理功能并重启数据库,待数据库重启后生效。$ yasboot group config set -c yashandb -g 1 -k CGROUP_FLAG -v 1 -d $ yasboot cluster restart -c yashandb # 可通过如下命令查看CGROUP_FLAG参数于所有节点中修改结果 $ yasboot group config show -c yashandb -g 1 -q CGROUP_FLAG
Note:
执行如上命令开启CPU资源管理功能之后,如果使用RMUSER用户连接至数据库,就会受到资源管理的限制。
连接数据库后通过
CGROUP_ROOT_DIR
参数查看当前节点cgroup安装路径,该路径默认位于/sys/fs/cgroup
;通过CGROUP_FLAG
参数查看当前节点资源管理功能是否开启,值为1表明资源管理功能开启。show parameter cgroup_root_dir; NAME VALUE ------------------------------ --------------------------------------- CGROUP_ROOT_DIR /sys/fs/cgroup show parameter cgroup_flag; NAME VALUE ---------------------------------------------------------------- ---------------------------------------------------------------- CGROUP_FLAG 1
# 修改映射关系
如需更改某个用户映射的资源使用组,有如下两种方式:
先删除原有的映射关系,再将该用户映射到新的资源使用组。
--创建新资源使用组NEWGROUP BEGIN DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('NEWGROUP',''); END; / --删除RMUSER用户原有的映射关系 BEGIN DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP_MAPPING('USER','RMUSER'); END; / --将RMUSER映射至NEWGROUP组中 BEGIN DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','RMUSER','NEWGROUP'); END; /
先将用户映射到DEFAULT_CONSUMER_GROUP组中,再将该用户映射到新的资源使用组。
--创建新资源使用组NEWGROUP2 BEGIN DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('NEWGROUP2',''); END; / --将RMUSER映射至DEFAULT_CONSUMER_GROUP组中 BEGIN DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','RMUSER','DEFAULT_CONSUMER_GROUP'); END; / --将RMUSER映射至NEWGROUP2组中 BEGIN DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','RMUSER','NEWGROUP2'); END; /
# 关闭资源管理
如需删除某个资源使用组,须先删除该资源使用组相关的映射关系及资源计划指令,否则返回错误。
删除映射关系。
如删除某个映射关系中映射的用户,该用户关联的映射关系均会删除。
不支持删除SYS用户的映射关系。
BEGIN DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP_MAPPING('USER','RMUSER'); END; /
删除资源计划指令。
BEGIN DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE('RESMAN','RESMANGROUP'); END; /
删除资源使用组。
如果资源使用组仍有其它用户进行映射,将返回错误。
BEGIN DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP('RESMANGROUP'); END; /
通过yasboot工具修改
CGROUP_FLAG
参数关闭资源管理功能并重启数据库,待数据库重启后生效。$ yasboot group config set -c yashandb -g 1 -k CGROUP_FLAG -v 0 -d $ yasboot cluster restart -c yashandb # 可通过如下命令查看CGROUP_FLAG参数于所有节点中的修改结果 $ yasboot group config show -c yashandb -g 1 -q CGROUP_FLAG