暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

Oceanbase-02.创建租户和使用

原创 lizhao01 2022-05-16
2575

02.租户的使用

租户首次使用的步骤

步骤 作用
01.创建资源单元 指定每个单元要使用CPU(逻辑限制)、Memory(硬限制)、IOPS(不限制)、DISK(不限制)
资源分配时不要超过__ALL_VIRTUAL_SERVER_STAT剩余的可用资源
02.创建资源池 资源池需要指定资源单元以及要使用的zone
03.创建租户 创建租户指定副本数量,指定资源池,执行租户类型oracle、mysql。社区版仅支持mysql版
04.在租户上创建用户 用户是最终提交给终端用户使用的账号
05.提供使用 将账号提供给终端用户,视实际情况赋予相应权限

登录数据库

obclient、mysqlclient 都可以链接到oceabase

我首次安装完后,使用sys租户管理员进入了Oracle租户模式,使用root未成功进入Mysql租户模式,应该是和部署有关。

obclient -u[用户名]@[租户名]#[集群名称] -P[端口号] -h[ip地址] -p[密码] -D[数据库名] -c 当前支持 MySQL 客户端 V5.5、V5.6 和 V5.7 版本 mysql -u[用户名]@[租户名]#[集群名称] -P[端口号] -h[ip地址] -p[密码] -D[数据库名] -c 用户名:root 租户管理用户、user1(其它用户) 租户名:sys 系统租户名、test_tenant自建租户 集群名:部署的集群名
复制
  • 链接obproxy服务器
示例: ob 客户端链接 [admin@dbdriver soft]$ obclient -h10.51.175.65 -P2883 -uroot@sys#obtest -p -c -A oceanbase Enter password: Welcome to the OceanBase. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.6.25 OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [oceanbase]> SELECT version(); +--------------------+ | version() | +--------------------+ | 3.1.2-OceanBase CE | +--------------------+ 1 row in set (0.001 sec) mysql 客户端 代理服务器 如果连接语句中不带 -c 项,则连接至 MySQL 租户后 HINT 无法生效。 [admin@dbdriver soft]$ mysql -h10.51.175.65 -P2883 -uroot@sys#obtest -p -c -A oceanbase Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.6.25 OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SELECT version(); +--------------------+ | version() | +--------------------+ | 3.1.2-OceanBase CE | +--------------------+ 1 row in set (0.00 sec)
复制
  • 直连observer
[admin@dbdriver soft]$ obclient -h10.51.175.66 -P2881 -uroot@sys -p -c -A oceanbase Enter password: Welcome to the OceanBase. Commands end with ; or \g. Your MySQL connection id is 3221668585 Server version: 5.7.25 OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [oceanbase]> show processlist; +------------+---------+--------------------+-----------+---------+------+--------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +------------+---------+--------------------+-----------+---------+------+--------+------------------+ | 3221668585 | root | 10.51.175.65:30152 | oceanbase | Query | 0 | ACTIVE | show processlist | | 3221752496 | proxyro | 10.51.175.65:56586 | oceanbase | Sleep | 1 | SLEEP | NULL | +------------+---------+--------------------+-----------+---------+------+--------+------------------+ 2 rows in set (0.005 sec) mysql 客户端同理 [obdba@dbdriver soft]$ mysql -h10.51.175.66 -P2881 -uroot@sys -p -c -A oceanbase
复制

创建资源单元

  • 查看可分配资源
MySQL [oceanbase]> select zone,cpu_total,cpu_assigned,round(mem_total/1024/1024/1024,2) MEM_TOTAL_GB,round(mem_assigned/1024/1024/1024,2) MEM_ASSIGNED_GB FROM __ALL_VIRTUAL_SERVER_STAT; +-------+-----------+--------------+--------------+-----------------+ | zone | cpu_total | cpu_assigned | MEM_TOTAL_GB | MEM_ASSIGNED_GB | +-------+-----------+--------------+--------------+-----------------+ | zone1 | 14 | 2.5 | 32.00 | 8.00 | | zone2 | 14 | 2.5 | 32.00 | 8.00 | | zone3 | 14 | 2.5 | 32.00 | 8.00 | +-------+-----------+--------------+--------------+-----------------+ 3 rows in set (0.001 sec) 资源主要是cpu、memory资源限制,磁盘资源(空间、iops)、SESSION_NUM并未有的限制。已分配的cpu和memory资源等于所有unit的min资源总和。 如MEM_ASSIGNED_GB = sys_unit_config.min_memory + unit1.min_memory(待unit1创建完),所以创建资源单元时要依据可用资源来创建。 如果创建的资源超过了可用范围,那么创建pool时会遇到报错。 ERROR 4634 (HY000): resource unit 'unit1' is referenced by some resource pool
复制
  • 创建资源单元
MySQL [oceanbase]>CREATE RESOURCE UNIT unit1 MAX_CPU 2, MAX_MEMORY '2G', MAX_IOPS 10000,MAX_DISK_SIZE '500G', MAX_SESSION_NUM 1000, MIN_CPU=2, MIN_MEMORY='2G',MIN_IOPS=1000; Query OK, 0 rows affected (0.007 sec)
复制
  • 查看资源单元
MySQL [oceanbase]> SELECT * FROM oceanbase.__all_unit_config\G *************************** 1. row *************************** gmt_create: 2022-05-15 10:28:40.361525 gmt_modified: 2022-05-15 10:28:40.361525 unit_config_id: 1 name: sys_unit_config max_cpu: 5 min_cpu: 2.5 max_memory: 10307921510 min_memory: 8589934592 max_iops: 10000 min_iops: 5000 max_disk_size: 935229128704 max_session_num: 9223372036854775807 *************************** 2. row *************************** gmt_create: 2022-05-15 16:19:58.101575 gmt_modified: 2022-05-15 16:32:21.134720 unit_config_id: 1002 name: unit1 max_cpu: 9 min_cpu: 2 max_memory: 21474836480 min_memory: 2147483648 max_iops: 10000 min_iops: 1000 max_disk_size: 536870912000 max_session_num: 1000 2 rows in set (0.001 sec) 默认已经有了一个sys资源单元,新建的单元为unit1
复制
  • 修改资源单元
修改多个资源 ALTER RESOURCE UNIT unit1 MAX_CPU 10, MAX_MEMORY '20G', MAX_IOPS 128,max_disk_size '100G', MAX_SESSION_NUM 64, MIN_CPU=10, MIN_MEMORY='10G',MIN_IOPS=128; 修改某一个资源 ALTER RESOURCE UNIT unit1 MAX_CPU 64; 修改资源时MAX资源不能小于MIN资源
复制
  • 删除资源单元
删除未被使用的资源单元 MySQL [oceanbase]> DROP RESOURCE UNIT unit1; Query OK, 0 rows affected (0.004 sec) 删除已经被分配的资源单元 如果unit1被分配且需要删除,可以先创建资源单元 unit2 ,并将 unit2 指定给 pool1 后,再删除unit1
复制

创建资源池

  • 创建资源池
MySQL [oceanbase]> CREATE RESOURCE POOL pool1 UNIT='unit1',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3'); Query OK, 0 rows affected (0.012 sec)
复制
  • 删除资源池
MySQL [oceanbase]> DROP RESOURCE POOL pool1 ;
复制

创建租户

  • 创建租户
创建名为 test_tenant 的一个 3 副本的租户 CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4',replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='RANDOM',comment 'mysql tenant/instance', resource_pool_list=('pool1') set ob_tcp_invited_nodes='%',ob_compatibility_mode='mysql'; ob_tcp_invited_nodes='%' 白名单这个最好设上,否则首次登录报错ERROR 1227 (42501): Access denied。不过也可以用命令改一下这个参数。ALTER TENANT test_tenant SET VARIABLES ob_tcp_invited_nodes='%'; ob_compatibility_mode='mysql' 社区版只支持mysql租户。
复制
  • 删除租户
当使用drop TENANT test_tenant时,oceanbas是延迟删除,应该加上force,实测在一段时间内登录该租户,这个具体受哪个参数控制还需要研究一下。 MySQL [oceanbase]> drop TENANT test_tenant; Query OK, 0 rows affected (0.013 sec) 尝试登录仍然可以登录 [root@dbdriver log]# obclient -h10.51.175.65 -P2883 -uroot@test_tenant#obtest -p -c -A oceanbase Enter password: Welcome to the OceanBase. Commands end with ; or \g. Your MySQL connection id is 65546 Server version: 5.6.25 OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [oceanbase]> exit Bye [root@dbdriver log]# obclient -h10.51.175.65 -P2883 -uroot@test_tenant#obtest -p -c -A oceanbase 强制删除 MySQL [oceanbase]> drop TENANT test_tenant force; Query OK, 0 rows affected (0.020 sec) [root@dbdriver log]# obclient -h10.51.175.65 -P2883 -uroot@test_tenant#obtest -p -c -A oceanbase Enter password: ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: NO)
复制
  • 切换租户
不退出sys租户,切换到test_tenant租户 MySQL [oceanbase]> alter system change tenant test_tenant; 当前链接的租户 MySQL [oceanbase]> SHOW TENANT; +---------------------+ | Current_tenant_name | +---------------------+ | test_tenant | +---------------------+ 1 row in set (0.005 sec) 切换回sys租户 MySQL [oceanbase]> alter system change tenant sys; 当前链接的租户 MySQL [oceanbase]> SHOW TENANT; +---------------------+ | Current_tenant_name | +---------------------+ | sys | +---------------------+ 1 row in set (0.002 sec)
复制
  • 修改租户
修改租户资源 修改租户 tenant1 的 Primary Zone 为 zone2 ALTER TENANT tenant1 primary_zone='zone2'; 其中 F 表示副本类型为全功能型副本, B_4 为新增的 Zone 名称。、 ALTER TENANT tenant1 locality="F@B_1,F@B_2,F@B_3,F@B_4"; 不支持修改租户资源池 ALTER TENANT tenant1 resource_pool_list=('pool2'); ERROR 1210 (HY000): Incorrect arguments to resource pool list 修改租户变量 ALTER TENANT test_tenant SET VARIABLES ob_tcp_invited_nodes='%';
复制
  • 查看租户参数
登录或切换到test_tenant租户 查看所有参数 MySQL [oceanbase]> show variables ; MySQL [oceanbase]> show variables like 'ob_tcp_invited_nodes'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | ob_tcp_invited_nodes | % | +----------------------+-------+ 1 row in set (0.002 sec)
复制

创建用户链接租户

使用root登录到新建的test_tenant租户中 [admin@dbdriver ~]$ obclient -h10.51.175.65 -P2883 -uroot@test_tenant#obtest -p -A 只要登录的租户正确,那么创建用户的操作基本就和myql道理相同了 MySQL [(none)]> CREATE USER 'user1'@'%' IDENTIFIED BY 'welcome1'; Query OK, 0 rows affected (0.011 sec) MySQL [oceanbase]> grant select on test.* to user1; Query OK, 0 rows affected (0.014 sec) 新建用户测试登录 [admin@dbdriver ~]$ obclient -h10.51.175.65 -P2883 -uuser1@test_tenant#obtest -p -A Enter password: Welcome to the OceanBase. Commands end with ; or \g. Your MySQL connection id is 51 Server version: 5.6.25 OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+ 2 rows in set (0.012 sec)
复制

数据字典

数据库 字典 描述
oceanbase __all_unit_config 资源单元,情况
oceanbase __all_virtual_server_stat 虚拟服务器资源,资源单元分配要考虑从中计算
oceanbase __all_resource_pool 资源池信息
oceanbase __all_tenant 租户信息基表
oceanbase gv$tenant 租户信息视图-基表是__all_tenant

摘抄几个SQL

SELECT a.zone, CONCAT(a.svr_ip, ':', a.svr_port) observer, cpu_total, (cpu_total - cpu_assigned) cpu_free, round(mem_total / 1024 / 1024 / 1024) mem_total_gb, round((mem_total - mem_assigned) / 1024 / 1024 / 1024) mem_free_gb, round(disk_total / 1024 / 1024 / 1024) disk_total_gb, substr(a.build_version, 1, 6) version, usec_to_time(b.start_service_time) start_service_time FROM __all_virtual_server_stat a JOIN __all_server b ON (a.svr_ip = b.svr_ip AND a.svr_port = b.svr_port) ORDER BY a.zone, a.svr_ip; +-------+-------------------+-----------+----------+--------------+-------------+---------------+---------+----------------------------+ | zone | observer | cpu_total | cpu_free | mem_total_gb | mem_free_gb | disk_total_gb | version | start_service_time | +-------+-------------------+-----------+----------+--------------+-------------+---------------+---------+----------------------------+ | zone1 | 10.51.175.66:2882 | 14 | 9.5 | 32 | 22 | 871 | 3.1.2_ | 2022-05-15 10:28:42.486979 | | zone2 | 10.51.175.67:2882 | 14 | 9.5 | 32 | 22 | 871 | 3.1.2_ | 2022-05-15 10:28:44.516852 | | zone3 | 10.51.175.68:2882 | 14 | 9.5 | 32 | 22 | 871 | 3.1.2_ | 2022-05-15 10:28:44.687763 | +-------+-------------------+-----------+----------+--------------+-------------+---------------+---------+----------------------------+ 3 rows in set (0.019 sec)
复制

SELECT t1.name resource_pool_name, t2. name unit_config_name, t2.max_cpu, t2.min_cpu, round(t2.max_memory / 1024 / 1024 / 1024) max_mem_gb, round(t2.min_memory / 1024 / 1024 / 1024) min_mem_gb, t3.unit_id, t3.zone, CONCAT(t3.svr_ip, ':', t3. svr_port) observer, t4.tenant_id, t4.tenant_name FROM __all_resource_pool t1 JOIN __all_unit_config t2 ON (t1.unit_config_id = t2.unit_config_id) JOIN __all_unit t3 ON (t1. resource_pool_id = t3. resource_pool_id) LEFT JOIN __all_tenant t4 ON (t1.tenant_id = t4.tenant_id) ORDER BY t1. resource_pool_id, t2. unit_config_id, t3.unit_id; +--------------------+------------------+---------+---------+------------+------------+---------+-------+-------------------+-----------+-------------+ | resource_pool_name | unit_config_name | max_cpu | min_cpu | max_mem_gb | min_mem_gb | unit_id | zone | observer | tenant_id | tenant_name | +--------------------+------------------+---------+---------+------------+------------+---------+-------+-------------------+-----------+-------------+ | sys_pool | sys_unit_config | 5 | 2.5 | 10 | 8 | 1 | zone1 | 10.51.175.66:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 10 | 8 | 2 | zone2 | 10.51.175.67:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 10 | 8 | 3 | zone3 | 10.51.175.68:2882 | 1 | sys | | pool1 | unit1 | 4 | 2 | 2 | 2 | 1007 | zone1 | 10.51.175.66:2882 | 1003 | test_tenant | | pool1 | unit1 | 4 | 2 | 2 | 2 | 1008 | zone2 | 10.51.175.67:2882 | 1003 | test_tenant | | pool1 | unit1 | 4 | 2 | 2 | 2 | 1009 | zone3 | 10.51.175.68:2882 | 1003 | test_tenant | +--------------------+------------------+---------+---------+------------+------------+---------+-------+-------------------+-----------+-------------+ 6 rows in set (0.009 sec)
复制

最后修改时间:2022-07-06 08:37:16
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
2年前
评论
暂无图片 0
您好,您的文章已入选墨力原创作者计划合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
2年前
暂无图片 点赞
评论