切换产品类型

您可以点击下拉框切换本产品的不同产品类型,帮助您更高效地阅读文档。

网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

多租户管理与资源隔离

更新时间:2024-11-29 GMT+08:00
分享

本文介绍了TaurusDB提供的多租户数据隔离以及资源隔离的相关语法和使用说明。

功能简介

TaurusDB提供的多租户管理功能,让数据库能够为其多个租户服务,提高数据库资源利用率。租户间实现数据隔离,不同租户能访问自己的数据。支持租户级资源隔离和用户级资源隔离,资源隔离能够避免浪费和性能扰邻。支持资源动态调整,能够及时应对不同租户或用户的业务高峰和波谷。

多租户管理功能的原理图如下:

图1 多租户管理原理图

常用概念

表1所示为租户级和用户级的相关术语。

表1 租户级和用户级相关术语

所属层级

相关术语

租户级

租户(Tenant):租户的层级结构在数据库实例之下,在数据库与用户之上。租户是为了数据隔离、资源隔离提出的概念,实际访问数据库还是需要以用户的身份去访问。

资源配置(resource_config:为实现租户级资源隔离所提出的概念,一个resource_config描述了对应租户下能够使用的资源。当前仅支持通过设置min_cpu和max_cpu实现对CPU资源上下限进行配置,内置以下资源配置:

  • RDS_SYS_CONFIG:系统租户对应的资源配置,min_cpu默认为0.1(单位:CPU核数),max_cpu默认为实例规格的CPU核数。
  • shared_tenants_config:共享租户对应的资源配置,min_cpu固定为0,max_cpu默认为实例规格的CPU核数。

租户按照数据隔离的维度将租户分为系统租户和普通租户。

系统租户(sys_tenant):系统租户是为了适配原有模式下用户的使用,原有数据库实例中的用户默认属于系统租户,也可以称为系统用户。当通过系统租户下的用户连接数据库时,若该用户拥有对应的数据库实例访问权限,即可访问所有租户下的数据库。

普通租户(user_tenant):普通租户需要在系统租户下进行创建,普通租户下的数据库实例与用户完全隔离,无法互相访问,并且普通租户无法访问系统租户下的数据库。

租户可使用的资源由租户级资源配置(当前仅支持CPU资源)确定,按照资源隔离的维度又可以将租户分为独占型租户和共享型租户。

独占型租户:租户关联的资源配置中的min_cpu>0,需要保证在任何时刻该租户的CPU核数不小于min_cpu。

共享型租户:关联到特定的资源配置shared_tenants_config的租户,此资源配置的min_cpu=0。系统优先保证独占租户的资源请求,然后将剩余资源配给共享租户。同时,系统保留一部分CPU资源(由参数mt_shared_cpu_reserved进行配置)给共享租户,保证共享租户在CPU争抢时不会出现无法获取到资源的情况。独占型租户和共享型租户可以通过修改关联的资源配置进行相互转换。

用户级

用户的层级结构在数据库实例和租户之下,同一个租户可以拥有多个用户。多租户功能没有修改用户间的数据隔离,只增加了用户级的资源管理机制。

图2 用户级资源配置关系图

资源消费组(consumer_group)

多个用户可以归属到同一个资源消费组,这些用户共享资源消费组所关联的资源。

资源计划指令(plan_directive)

资源计划指令描述了一个资源消费组具体的资源配置情况,一个资源计划指令唯一对应一个资源消费组;一个资源消费组可以关联多个资源计划指令,其中至多只允许启用一个资源计划指令,为实现此功能,引入下述的资源计划的概念。

资源计划(plan)

用于控制资源计划指令的启用或禁用。一个资源计划关联一个或多个资源计划指令。启用或禁用资源计划可使对应的资源计划指令生效或失效,同一个租户内至多只能启用一个资源计划。

使用须知

  • 多租户管理与资源隔离功能支持租户级数据隔离、租户级CPU资源隔离、用户级CPU资源隔离。
  • 多租户管理与资源隔离功能需要TaurusDB实例内核版本为2.0.57.240900及以上。
  • 开启多租户管理与资源隔离前必须开启thread pool功能。
  • 开启多租户管理与资源隔离功能前,要求实例中的数据库名称、用户名称、表空间名称不能包含@字符。
  • Serverless不支持多租户管理与资源隔离功能。
  • 租户跨实例迁移:
    开启多租户管理与资源隔离功能后,DRS迁移可以迁移所有租户下的数据,但DRS不会同步租户相关元数据,故租户信息不会被同步到目标端。如果需要迁移某个租户到另一个实例,需要遵循以下步骤:
    1. 目标端需要使用具备多租特性的实例,首先在目标端手动创建租户。
    2. 使用DRS数据同步功能创建库级同步任务(如果源端和目标端租户名有改动,则这里需要改动目标端库名)。

    3. 进行同步。
  • Binlog:

    目前Binlog没有实现租户隔离,如果允许普通租户拉取Binlog会破坏租户间数据隔离,因此当前禁止普通租户下的用户拉取Binlog。

  • 数据库代理:

    因HTAP标准版和轻量版不支持带@字符的数据库,普通租户下的数据库迁移到该类HTAP引擎时会更改目标端库名,但数据库代理的自动行存/列存引流功能要求源端和目标端的库名一致,因此普通租户创建的数据库将无法使用数据库代理的自动行存/列存引流功能。

  • 备份恢复:

    恢复已打开过多租开关的多租实例数据到新实例,未开启多租开关下,新实例不支持创建带@的用户、数据库和表空间。

  • 兼容性:
    • 先开启后关闭多租开关,创建数据库、用户和表空间时,名称中不能包含@字符。
    • 普通租户下,数据库名称最大长度由64降低为50,用户名称最大长度由32降低为20。
    • 系统库mysql、sys暂不开放给普通租户。
    • 普通租户下,系统库performance_schema里的表使用用户名或库名做条件查询时,需要使用模糊搜索。
    • 系统租户的root用户可以kill其他用户的session;普通租户的用户,只能kill当前用户的session。
    • 多租实例不支持全文索引。

开启多租户模式

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 在页面左上角单击,选择数据库 > 云数据库 TaurusDB
  4. 在实例管理页面,单击目标实例名称,进入实例概览页面。
  5. 在实例信息区域,单击多租户隔离右侧,在弹框中单击“确认”,开启多租户隔离功能。

    开启多租户隔离前要求存量的数据库名称、用户名称以及表空间名称不能包含@字符,否则会开启失败。

资源管理

资源配置(resource_config)和租户是一对多的关系,当某一租户绑定此资源配置时便可限制此租户下用户使用的CPU资源。

  • 创建资源配置
    CREATE resource_config config_name MAX_CPU [=] {max_cpu_value} [MIN_CPU [=] {min_cpu_value}];
  • 更新资源配置
    ALTER resource_config config_name MAX_CPU [=] {max_cpu_value} [MIN_CPU [=] {min_cpu_value}];
  • 删除资源配置
    DROP resource_config config_name;
  • 查看资源配置
    SELECT * FROM information_schema.DBA_RSRC_TENANT_RESOURCE_CONFIGS;
说明:
  • 仅在高权限root用户下可使用。
  • 参数说明:
    • config_name: 资源配置名称。最大长度为64,仅支持包含大写字母、小写字母、数字或下划线。
    • MAX_CPU:绑定该资源配置的租户能够使用的最大CPU资源,单位为核数,最小值为0.1,最大值为实例规格中的CPU核数,可查看变量mt_flavor_cpu获取。粒度0.1。
    • MIN_CPU:在CPU资源争抢时,承诺分配给绑定该资源配置的租户的CPU资源,单位为核数,为可选项。默认等于MAX_CPU,最小值为0.1,最大值不超过MAX_CPU。粒度为0.1。(注意:shared_tenants_config为系统内置的资源配置,其MIN_CPU为0)。承诺分配给租户的CPU资源遵循按需分配策略,不会预留,例如:承诺给租户分配1U,但如果租户业务空闲,只会使用0.3U,则剩余的0.7U会按需分配给其他租户。
  • 更新resource_config时,如果该resource_config已经绑定租户,且更新后MIN_CPU值大于原有的MIN_CPU值,则需要校验修改后的值是否满足资源约束,否则不做资源约束校验。
  • 删除resource_config时,若租户正在使用该资源配置,则无法进行删除操作。
  • CPU争抢时,租户间资源分配会尽量按照租户的MIN_CPU分配资源,但存在一定的误差,误差通常在1U以内。
  • 各租户下的实例的读写性能峰值并非和分配到的CPU资源呈线性关系。例如16U的实例分配给2个租户的MAX_CPU均为8U,那么两个租户同时满载跑业务的总共的TPS将达不到8U实例的2倍。即租户下的实例性能可能比同等规格的非多租实例的性能稍低。

租户管理

创建租户时,需要绑定已经创建的资源配置(resource_config),以此限制该租户下用户使用的CPU资源。

  • 创建租户
    CREATE TENANT tenant_name RESOURCE_CONFIG config_name [COMMENT [=] 'comment_string'];
  • 更改租户
    ALTER TENANT tenant_name RESOURCE_CONFIG config_name [COMMENT [=] 'comment_string'];
  • 删除租户
    DROP TENANT tenant_name;
  • 查看租户
    SELECT * FROM information_schema.DBA_RSRC_TENANT;
说明:
  • 仅在高权限root用户下可使用。
  • 创建租户
    • tenant_name长度不超过10个字符,仅支持包含小写字母、数字或下划线_。
    • 创建租户会进行资源约束检查,需要保证所有租户的资源配置中MIN_CPU之和满足资源约束。
    • 如果租户绑定shared_tenants_config,则租户成为共享租户,否则是独占租户。当发生资源争抢时,优先满足独占租户的MIN_CPU承诺资源需求,剩余的资源再由共享租户和独占租户争抢。
  • 更改租户resource_config
    • 如果新绑定的resource_config的MIN_CPU值大于等于原有resource_config的MIN_CPU值时,会进行资源约束检查,需要保证所有租户的资源配置中MIN_CPU之和满足资源约束。
    • 如果独占租户新绑定到shared_tenants_config,则成为共享租户,将同时删除租户下的用户级资源隔离相关的配置。
  • 删除租户
    • 需要保证租户下的DB和用户已经被删除,否则,无法删除租户。
    • 删除租户的同时将删除租户关联的用户级资源隔离相关的配置。

用户管理

开启多租模式后,用户分为系统租户下的用户和普通租户下的用户。存量的用户均属于系统租户,新创的用户根据接口语义属于系统租户或者普通租户。

  • 在系统租户下管理用户

    创建用户

    创建系统租户下的用户:

    CREATE user [IF NOT EXISTS] user_name@host;

    创建普通租户下的用户:

    CREATE user [IF NOT EXISTS] 'user_name@tenant_name'@host; 

    重命名用户

    重命名系统租户下的用户:

    RENAME USER user_from@host1 TO user_to@host2; 

    重命名普通租户下的用户:

    RENAME USER 'user_from@tenant_name'@host1 TO 'user_to@tenant_name'@host2; 

    删除用户

    删除系统租户下的用户:

    DROP USER [IF EXISTS] user_name@host; 

    删除普通租户下的用户:

    DROP USER [IF EXISTS] 'user_name@tenant_name'@host;

    授权用户

    为用户'user_1@tenant_1'@'%'授予租户tenant_1下的priv_type权限:

    GRANT priv_type ON *.* to 'user_1@tenant_1'@'%' with grant option;

    查看权限:

    SHOW grants for 'user_1@tenant_1'@'%';
  • 在普通租户下管理用户

    创建用户

    创建当前租户下的用户:

    CREATE user [IF NOT EXISTS] user_name@host; 

    重命名用户

    RENAME USER user_from@host1 TO user_to@host2;

    删除用户

    DROP USER [IF EXISTS] user_name@host;

    授权用户

    为用户user1授予当前租户下的priv_type权限:

    GRANT priv_type ON *.* to 'user_1'@'%' with grant option;

    查看权限:

    SHOW grants for 'user_1';
说明:
  • 以系统租户身份创建或删除普通租户下的用户时,需要以user_name@tenant_name的方式对用户进行操作。
  • 普通租户下的用户名称的长度被限制为不超过20个字符。
  • 租户内不可以创建部分特殊用户:mysql.sys, mysql.session, mysql.infoschema以及参数rds_reserved_users中保留的用户。
  • 在系统租户下,对普通租户下的用户重命名时,需要保证user_from和user_to中的tenant_name相同,如不相同,则接口返错。
  • 多租户隔离特性关闭时,无法重命名普通租户下的用户。

数据库管理

数据库分为系统租户下的数据库和普通租户下的数据库。系统租户可以访问所有数据库,普通租户只能访问属于自己的数据库。

  • 在系统租户下管理数据库

    创建数据库

    创建系统租户的数据库:

    CREATE DATABASE [IF NOT EXISTS] `db_name`;

    创建普通租户的数据库:

    CREATE DATABASE [IF NOT EXISTS] `db_name@tanant_name`; 

    删除数据库

    删除系统租户的数据库:

    DROP DATABASE [IF EXISTS] `db_name`;

    删除普通租户的数据库:

    DROP DATABASE [IF EXISTS] `db_name@tanant_name`;
  • 在普通租户下管理数据库

    创建当前租户的数据库:

    CREATE DATABASE [IF NOT EXISTS] 'db_name'; 

    删除当前租户的数据库:

    DROP DATABASE [IF EXISTS] 'db_name';
说明:
  • 在系统租户下需要以db_name@tenant_name的方式对普通租户下的数据库进行操作。
  • 系统库SYS、MYSQL暂不允许普通租户访问。
  • 租户内不可以创建部分特殊DB:INFORMATION_SCHEMA, PERFORMANCE_SCHEMA, MYSQL, SYS, __recyclebin__。
  • 存量数据库分配租户

    为保证兼容性,升级或者迁移到多租实例后,存量的数据库默认属于系统租户,可以通过如下语法将存量的数据库分配给租户。此外,对于已经开启多租特性后,系统租户创建的且未分配给普通租户的数据库,也可通过如下语法分配数据库给对应租户。

    数据库分配

    将数据库分配给租户名为tenant_name的普通租户

    ALTER DATABASE db_name TENANT = `tenant_name`;

    将数据库回收到系统租户下

    ALTER DATABASE db_name TENANT = ``;

    查看映射关系

    SELECT * FROM information_schema.DBA_RSRC_TENANT_DB;
    说明:
    • 仅在高权限root用户下可使用。
    • 如果数据库是开启多租后创建的,以db_name@tenant_name格式命名的数据库不允许分配调用此接口,接口会返错。
    • 如果tenant不存在,且不为空,接口返错。
  • 通过租户下的用户连接数据库

    在系统租户下,原有连接方式不变。

    在普通租户下,指定用户时,需要以user_name@tenant_name的形式;指定数据库时,支持db_name和db_name@tenant_name两种形式。

    mysql --host=**** -u user1@tenant_1 -D db1 -p pwssword;
    mysql --host=**** -u user1@tenant_1 -D db1@tenant_1 -p pwssword;

    连接成功后,该用户将受到对应租户下的资源限制。

用户级资源配置

租户下的用户默认共享当前租户的资源,若要进行用户级资源限制,请使用本节提供的用户级资源配置接口。

注意:

共享租户无法进行用户级资源配置。

  • 资源消费组(consumer_group)管理

    多个用户可以归属到同一个资源消费组(consumer_group),这些用户共享资源消费组所关联的资源,通过租户下的用户连接数据库,进行资源消费组管理。

    创建消费组

    dbms_resource_manager.create_consumer_group (
       consumer_group     CHAR(128),
       comment            CHAR(2000));
    说明:
    • consumer_group:资源消费组名称,仅支持包含大写字母、小写字母、数字或下划线。
    • comment:资源消费组说明,可为''。

    添加用户到资源消费组/从资源消费组中移除用户

    dbms_resource_manager.set_consumer_group_mapping ( 
       attribute        CHAR(128),  
       value            varbinary(128),  
       consumer_group   CHAR(128));
    说明:
    • attribute:要添加或修改的映射属性,当前版本仅支持USER。
    • value:要添加或修改的映射属性,当前版本仅支持用户名。
    • consumer_group:资源消费组名称,当参数不为空时将用户添加到资源消费组,当参数为空('')时,将用户从所在的资源消费组中移除。

    删除消费组

    dbms_resource_manager.delete_consumer_group (
        consumer_group   CHAR(128));
    说明:
    • consumer_group:资源消费组名称。
    • 删除consumer_group的时候会同步删除该资源消费组对应的plan_directive以及consumer_group_mapping。
    • 如果特性开关打开,删除用户时,会自动将用户从已关联的资源消费组中移除。当特性关闭时,删除用户时不会自动从已关联的资源消费组中移除,但不会有任何影响,当后续重新打开特性时,如果发现关联到资源消费组的用户已经被删除,会自动将这些用户从已关联的资源消费组中移除。
    • 如果特性开关打开,重命名用户时,不影响用户与资源消费组的关联关系。如果特性开关关闭后,删除用户,再创建同名用户,后续打开特性,该用户依然属于原有的资源消费组。

    查看资源消费组

    视图DBA_RSRC_CONSUMER_GROUPS记录了资源消费组信息。如果以系统租户下的用户身份下查看,则可以查询到所有租户的资源消费组信息,如果在普通租户下查看,只能看到当前租户下的资源消费组信息。

    select * from information_schema.DBA_RSRC_CONSUMER_GROUPS;

    查看资源消费组和用户的关联关系

    视图DBA_RSRC_GROUP_MAPPINGS记录了用户和资源消费组的关联关系。如果以系统租户下的用户身份下查看,则可以查询到所有租户的用户和资源消费组的关联关系,如果在普通租户下查看,只能看到当前租户下的用户和资源消费组的关联关系。

    select * from information_schema.DBA_RSRC_GROUP_MAPPINGS;

资源计划(plan)管理

资源计划(plan)用于控制资源计划指令(plan_directive)的启用或禁用。一个资源计划关联一个或多个资源计划指令。启用或禁用资源计划可使对应的资源计划指令生效或失效,同一个租户内至多只能启用一个资源计划。

  • 创建资源计划
    dbms_resource_manager.create_plan (
       plan_name         VARCHAR(128), 
       comment           VARCHAR(2000));
    说明:
    • plan_name:资源计划名称,仅支持包含大写字母、小写字母、数字或下划线。
    • comment:资源计划描述信息,可为''。
    • 若删除当前启用的资源计划,则会将当前启用的资源计划设置为空,同时删除对应的资源计划指令(plan_directive)。
    • plan默认可配置的最大数量为128,由参数mt_resource_plan_num控制。
  • 启用或禁用资源计划
    dbms_resource_manager.set_resource_manager_plan( 
        plan_name     VARCHAR(128));
    说明:
    • plan_name:资源计划名称。如果为空(''),则禁用资源计划。
  • 删除资源计划
    dbms_resource_manager.delete_plan (
        plan_name    VARCHAR(128));
    说明:
    • plan_name:资源计划名称。
    • 删除当前正在启用的资源计划,则会将当前启用的资源计划设置为空,同时删除所关联的资源计划指令(plan_directive)。
  • 查看资源计划

    视图DBA_RSRC_PLANS记录资源计划的详细信息。如果在系统租户下查看,则可以查询到所有租户的资源计划,如果在普通租户下查看,只能看到当前租户下的资源计划。

    SELECT * FROM information_schema.DBA_RSRC_PLANS;

资源计划指令(plan_directive)管理

资源计划指令描述了一个资源消费组具体的资源配置情况,一个资源计划指令唯一对应一个资源消费组;一个资源消费组可以关联多个资源计划指令,其中至多只允许启用一个资源计划指令,启用资源计划指令由上述启用资源计划实现。

  • 创建资源计划指令
    dbms_resource_manager.create_plan_directive (
       plan                    CHAR(128), 
       group_or_subplan        CHAR(128), 
       comment                 VARCHAR(2000), 
       mgmt_p1                 bigint(20),
       utilization_limit       bigint(20));
    说明:
    • plan:资源计划(plan)的名称。
    • group_or_subplan:资源消费组(consumer_group)的名称。
    • comment:资源计划指令的描述信息,可为''。
    • mgmt_p1:在CPU资源争抢的情况下,承诺分配给本资源消费组的CPU资源占所属租户总CPU资源的比例,取值范围[0, 100],表示使用所属租户100%的CPU。同一租户且同一个资源计划(plan)所关联的所有资源计划指令(plan_directive)的mgmt_p1总和不超过100。当租户内的各个资源消费组发生CPU争抢,优先保证承诺分配各个资源消费组CPU资源,剩余的CPU资源由各个资源消费组争抢。承诺分配给资源消费组的CPU资源也遵循按需分配策略,不会预留,例如:承诺给当前资源消费组20%的CPU资源,但当前资源消费组业务量较少,只需要5%的CPU资源,则剩余的15%的CPU资源会按需分配给其他资源消费组。
    • utilization_limit:资源消费组可用的CPU资源的上限占所属租户总CPU资源的比例,取值范围为 [1, 100]。表示最大可使用租户全部CPU资源,如果取值为70则表示最大可使用租户70%的CPU资源。
    • 同一资源消费组下的用户共享当前启用的资源计划指令配置的资源。例如:同一租户下的用户user1和user2都添加到资源消费组consumer_group1中,consumer_group1当前启用的资源计划指令的UTILIZATION_LIMIT为70,mgmt_p1为10,则user1和user2可使用的CPU资源总和最大为当前租户70%,CPU争抢时,保证user1和user2可获得的CPU资源总和为当前租户10%。
  • 更新资源计划指令
    dbms_resource_manager.update_plan_directive (
       plan                    CHAR(128), 
       group_or_subplan        CHAR(128), 
       new_comment             VARCHAR(2000), 
       new_mgmt_p1             bigint(20),
       new_utilization_limit   bigint(20));
    说明:
    • plan:资源计划(plan)的名称。
    • group_or_subplan:资源消费组(consumer_group)的名称。
    • comment:资源计划指令的描述信息,可为''。
    • mgmt_p1:在CPU资源争抢的情况下,承诺分配给本资源消费组的CPU资源占所属租户总CPU资源的比例,取值范围[0, 100],表示使用所属租户100%的CPU。同一租户且同一个资源计划(plan)所关联的所有资源计划指令(plan_directive)的mgmt_p1总和不超过100。当租户内的各个资源消费组发生CPU争抢,优先保证承诺分配各个资源消费组CPU资源,剩余的CPU资源由各个资源消费组争抢。承诺分配给资源消费组的CPU资源也遵循按需分配策略,不会预留,例如:承诺给当前资源消费组20%的CPU资源,但当前资源消费组业务量较少,只需要5%的CPU资源,则剩余的15%的CPU资源会按需分配给其他资源消费组。
    • utilization_limit:资源消费组可用的CPU资源的上限占所属租户总CPU资源的比例,取值范围为 [1, 100]。表示最大可使用租户全部CPU资源,如果取值为70则表示最大可使用租户 70%的CPU资源。
    • 同一资源消费组下的用户共享当前启用的资源计划指令配置的资源。例如:同一租户下的用户user1和user2都添加到资源消费组consumer_group1中,consumer_group1当前启用的资源计划指令的UTILIZATION_LIMIT为70,mgmt_p1为10,则user1和user2可使用的CPU资源总和最大为当前租户70%,CPU争抢时,保证user1和user2可获得的CPU资源总和为当前租户10%。
  • 删除资源计划指令
    dbms_resource_manager.delete_plan_directive (
        plan                   CHAR(128), 
        group_or_subplan       VARCHAR(128));
    说明:
    • plan:资源计划(plan)的名称。
    • group_or_subplan:资源消费组(consumer_group)的名称。
    • 删除正在启用的plan_directive, 将导致对应用户的资源配置失效。
  • 查看资源计划指令

    DBA_RSRC_PLAN_DIRECTIVES记录资源计划指令的详细信息。如果在系统租户下查看,则可以查询到所有租户的资源计划指令,如果在普通租户下查看,只能看到当前租户下的资源计划指令。

    SELECT * FROM information_schema.DBA_RSRC_PLAN_DIRECTIVES;

清空用户级配置

清空当前租户下所有的用户级资源配置相关的数据,包括资源消费组、资源计划,资源计划指令。在系统租户下执行,也只会清空系统租户下的用户级资源配置。
dbms_resource_manager.clear_all_configs();

CPU使用率统计

  • 用户级CPU使用率

    新增information_schema.cpu_summary_by_user视图,用于显示各个资源消费组的CPU使用信息,在系统租户下会显示所有租户的所有资源消费组的CPU使用信息,在普通租户下,只会显示当前租户的所有资源消费组的CPU使用信息,具体使用如下:

    SELECT * FROM information_schema.cpu_summary_by_user;
    说明:
    • 查询结果中的列名说明:

      TENANT_NAME:用户所属的租户名称。

      CONSUMER_GROUP:资源消费组名称。

      CPU_USAGE:资源消费组的CPU使用率,为使用的CPU占所在实例总CPU的比例。例如4U的实例中, 资源消费组实际用了2U, 那么CPU_USAGE为50%。

      CPU_USAGE_RELATIVE:资源消费组的CPU相对使用率,为使用的CPU占所在租户配置的MAX_CPU的比例。例如,当前租户的max_cpu为4U, 而资源消费组实际用了2U, 那么CPU_USAGE_RELATIVE为50%。

      INCLUDED_USERS:属于此资源消费组中的用户名。

    • 独占租户会创建一个默认的资源消费组default_group,租户下所有未绑定具体资源消费组的用户都会归属到default_group,default_group默认可使用租户的所有CPU资源,当租户内CPU争抢时,优先保证承诺分配给其他资源消费组的CPU资源,剩余的CPU资源分配给default_group。
  • 租户级CPU使用率

    新增information_schema.cpu_summary_by_tenant视图,用于显示各租户的CPU使用信息,在系统租户下会显示所有租户的CPU使用信息,在普通租户下,只会显示当前租户的CPU使用信息,具体使用如下:

    SELECT * FROM information_schema.cpu_summary_by_tenant;
    说明:
    • 查询结果中的列名说明:

      TENANT_NAME:租户名称。

      TENANT_TYPE:租户类型,exclusive表示独占租户,shared表示共享租户。

      CPU_USAGE:租户的CPU使用率,为使用的CPU占所在实例总CPU的比例。例如4U的实例中, 租户实际用了2U, 那么CPU_USAGE为50%。

      CPU_USAGE_RELATIVE:租户CPU相对使用率,为租户实际使用的CPU占配置的MAX_CPU的占比。例如,当前租户的max_cpu为4U, 而租户实际用了2U, 那么CPU_USAGE为50%。

    • 在满足所有独占租户MIN_CPU所配置的CPU资源后,所有的共享租户共享剩余的CPU资源,所以视图中所有的共享租户的CPU使用率一样,为所有共享租户的CPU使用率的总和。
提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容