更新时间:2026-07-27 GMT+08:00
分享

多租户资源管理使用说明

操作场景

本文将向您介绍如何进行数据库资源管理。

测试环境

  • 使用的ECS实例和TaurusDB版集群均位于同一地域和同一可用区。
  • TaurusDB版集群节点规格8核32GB,节点数量为2(一个主节点和一个只读节点)。
  • 使用默认参数模板,并开启多租户模式
  • ECS实例规格为32U,ECS的规格需大于集群规格,防止压测时ECS的性能达到瓶颈,影响多租户的资源隔离功能。

创建资源配置信息

使用高权限账号root连接数据库实例,创建资源配置信息,用于对租户资源进行限制。

create resource_config cfg_1 max_cpu 1;

创建租户

使用高权限账号连接数据库实例,创建tenant_1,且在创建租户时与指定的资源配置信息绑定。

create tenant tenant_1 resource_config cfg_1;

创建用户和数据库

租户创建成功后,创建租户tenant_1下的用户和数据库。

在租户tenant_1下创建用户user_1,并授予user_1在tenant_1租户下的所有执行权限。此处可以将user_1@tenant_1当作租户tenant_1下的一个高权限账号。

  1. 在高权限账户下创建'user_1@tenant_1'。
    CREATE user 'user_1@tenant_1' IDENTIFIED WITH mysql_native_password BY {password}; 
  2. 在高权限账户下,为user_1@tenant_1授予租户tenant_1下的所有执行权限。
    GRANT all privileges ON `%@tenant_1`.* to 'user_1@tenant_1'@'%' with grant option;
  3. 在高权限账户下创建数据库。
    CREATE DATABASE `sbtest@tenant_1`;

测试场景

完成资源配置、租户、用户和数据库的创建后,通过以下两个场景验证多租户资源管理的效果。

场景一:租户级资源管理

使用user_1@tenant_1账号对数据库sbtest进行压力测试:

sysbench --db-driver=mysql --mysql-host=host --mysql-port=3306 --mysql-user=user_1@tenant_1 --mysql-password=password --mysql-db=sbtest --table_size=25000 --tables=250 --threads=64 --time=180 --percentile=95 --report-interval=1 oltp_read_only run

执行如下SQL,依次将cfg_1进行变配:

alter resource_config cfg_1 max_cpu 1 min_cpu 1;
-- 相隔5分钟再执行变更
alter resource_config cfg_1 max_cpu 2 min_cpu 1;
-- 相隔5分钟再执行变更
alter resource_config cfg_1 max_cpu 4 min_cpu 1;

场景二:用户级资源管理

通过租户tenant_1连接数据库实例,并创建资源消费组group1和group2,绑定消费组group1到用户user_1。创建资源计划plan1,配置资源计划指令plan_directive_for_user1,plan_directive_for_user1将plan1与group1关联,并且配置mgmt_p1为10,utilization_limit为40。

mysql --host=host -u user_1@tenant_1 -p password
CALL dbms_resource_manager.create_consumer_group('group1', 'comment');
CALL dbms_resource_manager.set_consumer_group_mapping('USER', 'user_1', 'group1');
CALL dbms_resource_manager.create_plan('plan1', 'comment');
CALL dbms_resource_manager.create_plan_directive('plan1', 'group1', 'plan_directive_for_user1', 20, 20);

通过租户tenant_1连接数据库实例,启用资源计划。

相关文档