设计网站做的工作步骤是,最近韩国电影片免费观看,企业开源建站系统,dede古风类网站源码概述 OceanBase 数据库是多租户的分布式数据库#xff0c;租户使用的资源建立在资源池上。资源池包含了资源单元#xff0c;而资源单元则规定了具体资源的量化#xff08;如 CPU、Memory、Disk_Size 和 IOPS 等#xff09;。 创建租户前#xff0c;必须规定租户使用的资源…概述 OceanBase 数据库是多租户的分布式数据库租户使用的资源建立在资源池上。资源池包含了资源单元而资源单元则规定了具体资源的量化如 CPU、Memory、Disk_Size 和 IOPS 等。 创建租户前必须规定租户使用的资源范围资源池和资源单元就是为了满足租户资源隔离和负载均衡而存在的。 资源管理中的概念
资源单元Resource UnitUnit
资源单元是一个容器。实际上副本是存储在资源单元之中的所以资源单元是副本的容器。资源单元包含了计算存储资源Memory、CPU 和 IO 等同时资源单元也是集群负载均衡的一个基本单位在集群节点上下线扩容缩容时会动态调整资源单元在节点上的分布进而达到资源的使用均衡。
资源池 Resource Pool
一个租户拥有若干个资源池这些资源池的集合描述了这个租户所能使用的所有资源。一个资源池由具有相同资源规格Unit Config的若干个资源单元组成。一个资源池只能属于一个租户。每个资源单元描述了位于一个 Server 上的一组计算和存储资源可以视为一个轻量级虚拟机包括若干 CPU 资源、内存资源、磁盘资源等。一个租户在同一个 Server 上最多有一个资源单元资源单元是和副本关联的显而易见一个服务器不能有同一份数据的两个副本。
资源配置Resource Config
资源配置是资源单元的具体配置包含资源单元所属的资源池信息、使用资源的租户信息、资源单元的配置信息如 CPU 核数和内存资源等。修改资源配置可以动态调整资源单元的计算资源进而调整对应租户的资源。
下面开始演示资源管理和租户创建
1资源管理
集群默认有个内部租户sys可以查看和管理集群的资源sql如下
select a.zone,concat(a.svr_ip,:,a.svr_port) observer, cpu_total, cpu_assigned, (cpu_total-cpu_assigned) cpu_free,mem_total/1024/1024/1024 mem_total_gb, mem_assigned/1024/1024/1024 mem_assign_gb, (mem_total-mem_assigned)/1024/1024/1024 mem_free_gbfrom __all_virtual_server_stat a join __all_server b on (a.svr_ipb.svr_ip and a.svr_portb.svr_port) order by a.zone, a.svr_ip;结果如下实验环境集群为单节点集群 ---------------------------------------------------------------------------------------------------------------| zone | observer | cpu_total | cpu_assigned | cpu_free | mem_total_gb | mem_assign_gb | mem_free_gb |---------------------------------------------------------------------------------------------------------------| zone1 | 192.168.152.30:2882 | 14 | 2.5 | 11.5 | 5.000000000000 | 1.250000000000 | 3.750000000000 |---------------------------------------------------------------------------------------------------------------1 row in set (0.006 sec)查看资源单元规格 MySQL [oceanbase] select * from __all_unit_config;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| gmt_create | gmt_modified | unit_config_id | name | max_cpu | min_cpu | max_memory | min_memory | max_iops | min_iops | max_disk_size | max_session_num |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 2023-02-07 09:51:59.323369 | 2023-02-07 09:51:59.323369 | 1 | sys_unit_config | 5 | 2.5 | 1610612736 | 1342177280 | 10000 | 5000 | 10737418240 | 9223372036854775807 |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1 row in set (0.001 sec)MySQL [oceanbase]可以看出资源单元规格 sys_unit_config 的定义里 CPU 和内存的最小值和最大值定义不一样而第一条sql统计资源中的已分配资源时是按最小值进行计算的。这将会导致剩余的可用资源计算不那么准确。 所以建议把该资源单元规格中定义的 CPU 和内存的最小值和最大值拉平。 修改资源单元 sys_unit_config
alter resource unit sys_unit_config min_cpu5,max_cpu5,min_memory1610612736B, max_memory1610612736B;再次查看资源情况可以看见资源统计计算准确查看已分配资源池的情况 select t1.name resource_pool_name, t2.name unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, 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_idt2.unit_config_id)join __all_unit t3 on (t1.resource_pool_id t3.resource_pool_id)left join __all_tenant t4 on (t1.tenant_idt4.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 | 5 | 1.500000000000 | 1.500000000000 | 1 | zone1 | 192.168.152.30:2882 | 1 | sys |
-----------------------------------------------------------------------------------------------------------------------------------------------------
2 rows in set (0.005 sec)
2如何创建和连接 MySQL 租户 1.创建资源单元规格该步骤为可选步骤如果有合适的规格可以跳过此步骤直接进行复用 2.创建资源池可以每个 zone 一个资源池使用独立的资源单元规格也可以所有 zone 使用同一个资源单元规格都在一个资源池下。 3.创建租户创建租户时需关联到第 2 步中创建的资源池。 4.连接租户 MySQL 客户端连接 OBClient 客户端连接 OceanBase 连接驱动JDBC DBEAVER 客户端连接 ODC 客户端连接OceanBase 提供官方图形化客户端工具 OceanBase Developer Center简称 ODC -创建资源单元规格 查看创建的资源单元规格select * from __all_unit_config;CREATE resource unit S1max_cpu3, min_cpu3, max_memory3G, min_memory3G, max_iops10000, min_iops1000, max_session_num1000000, max_disk_size1024G;
CREATE resource unit S2 max_cpu4, min_cpu4, max_memory3G, min_memory3G, max_iops10000, min_iops1000, max_session_num1000000, max_disk_size1024G;
MySQL [oceanbase] select * from __all_unit_config;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| gmt_create | gmt_modified | unit_config_id | name | max_cpu | min_cpu | max_memory | min_memory | max_iops | min_iops | max_disk_size | max_session_num |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 2023-02-07 09:51:59.323369 | 2023-02-07 12:20:46.250880 | 1 | sys_unit_config | 5 | 5 | 1610612736 | 1610612736 | 10000 | 5000 | 10737418240 | 9223372036854775807 || 2023-02-07 14:09:21.996793 | 2023-02-07 14:09:21.996793 | 1001 | S1 | 3 | 3 | 3221225472 | 3221225472 | 10000 | 1000 | 1099511627776 | 1000000 || 2023-02-07 14:09:37.685271 | 2023-02-07 14:09:37.685271 | 1002 | S2 | 4 | 4 | 3221225472 | 3221225472 | 10000 | 1000 | 1099511627776 | 1000000 |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3 rows in set (0.001 sec-创建资源池 创建语法单节点集群的话create resource pool pool_1 unitS1 , unit_num1, zone_list(zone1) ;单副本单节点集群unit_num只能是11-1-1集群的话create resource pool pool_1 unitS1 , unit_num1, zone_list(zone1 ,zone2) ;1-1-1集群每一个zone中的server是1unit_num最大是1 create resource pool pool_2 unitS2 , unit_num1, zone_list(zone3);3-3-3集群的话create resource pool pool1unit‘s1’,unit_num3#一个zone中包含的observer数据量x3, 集群最低要求3-3-3否则会报错3个zone表示3副本每个zone中3台observer。zone_list‘zone1’‘zone2’‘zone3’‘zone4’UNIT_NUM unitnum指定要创建的单个 Zone 下的 Unit 个数。每个单元会根据当前集群负载自动在每个 Zone中选择一个 Server 负载 但同一个资源池的多个 Unit 不能分配到同一个 Server即一个资源池包含的 Unit 个数不能超过单 Zone 内 Server 的个数。 资源池创建出来后集群的可用资源就减少了。但是这个资源池还没有关联到具体租户所以无法被业务使用。
查看已分配资源池的情况select t1.name resource_pool_name, t2.name unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, 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_idt2.unit_config_id)join __all_unit t3 on (t1.resource_pool_id t3.resource_pool_id)left join __all_tenant t4 on (t1.tenant_idt4.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 | 5 | 1.500000000000 | 1.500000000000 | 1 | zone1 | 192.168.152.30:2882 | 1 | sys || pool_1 | S1 | 3 | 3 | 3.000000000000 | 3.000000000000 | 1001 | zone1 | 192.168.152.30:2882 | NULL | NULL |-----------------------------------------------------------------------------------------------------------------------------------------------------再次查看剩余资源MySQL [oceanbase] select a.zone,concat(a.svr_ip,:,a.svr_port) observer, cpu_total, cpu_assigned, (cpu_total-cpu_assigned) cpu_free,- mem_total/1024/1024/1024 mem_total_gb, mem_assigned/1024/1024/1024 mem_assign_gb, (mem_total-mem_assigned)/1024/1024/1024 mem_free_gb- from __all_virtual_server_stat a join __all_server b on (a.svr_ipb.svr_ip and a.svr_portb.svr_port) order by a.zone, a.svr_ip;---------------------------------------------------------------------------------------------------------------| zone | observer | cpu_total | cpu_assigned | cpu_free | mem_total_gb | mem_assign_gb | mem_free_gb |---------------------------------------------------------------------------------------------------------------| zone1 | 192.168.152.30:2882 | 14 | 8 | 6 | 5.000000000000 | 4.500000000000 | 0.500000000000 |---------------------------------------------------------------------------------------------------------------1 row in set (0.005 sec)MySQL [oceanbase]-创建租户
创建租户时需关联到第 2 步中创建的资源池。
create tenant obmysql resource_pool_list(pool_1), primary_zoneRANDOM,comment mysql tenant/instance, charsetutf8 set ob_tcp_invited_nodes% ; ob_tcp_invited_nodes设置客户端IP白名单‘%’,表示允许所有的来源默认仅为本机127.0.0.1。 zone_list‘zone1’‘zone2’‘zone3’ 租户资源使用的zone资源分布在哪些zone上实验环境是单机集群没法按照示例创建。 primary_ZONE‘ZONE1,ZONE2,ZONE3’ 主副本偏好设置。 查看tenant信息
MySQL [oceanbase] select * from gv$tenant;------------------------------------------------------------------------------------------------------------------| tenant_id | tenant_name | zone_list | primary_zone | collation_type | info | read_only | locality |------------------------------------------------------------------------------------------------------------------| 1 | sys | zone1 | zone1 | 0 | system tenant | 0 | FULL{1}zone1 || 1001 | obmysql | zone1 | RANDOM | 0 | mysql tenant/instance | 0 | FULL{1}zone1 |------------------------------------------------------------------------------------------------------------------2 rows in set (0.003 sec)总结一个资源单元为 UNITUNIT是最小的资源分割单位。一个资源池中包含若干 UNIT一台Observer 只能有一个资源池的一个 UNIT。所以创建resourcepool时unit_num最大数不能超过单个zone总observer的数目一个资源池只能赋予给一个租户一个租户可以包含多个资源池。资源池若指定只分布在一个zone则该zone失效后数据丢失无副本。一个资源池建议指定分布在多个zone多个zone则存在副本。最好是全部zone需大于2若等于2一个zone损坏由于不满足多数派虽然数据还有一个副本但是服务会停止–连接租户
1.obclient obclient -h192.168.152.30 -urootobmysql -P2881 -p -c -A oceanbasealter user root identified by bJVqqEVt ;obclient -h192.168.152.30 -urootobmysql -P2881 -pbJVqqEVt -c -A oceanbaseshow databases;过程如下
[adminobce01 ~]$ obclient -h192.168.152.30 -urootobmysql -P2881 -p -c -A oceanbaseEnter password: --------------------------------------------------------初始密码为空Welcome to the OceanBase. Commands end with ; or \g.Your MySQL connection id is 3221489885Server version: 5.7.25 OceanBase 3.1.0 (r3-b20901e8c84d3ea774beeaca963c67d7802e4b4e) (Built Aug 10 2021 08:10:38)MySQL [oceanbase] alter user root identified by bJVqqEVt ;Query OK, 0 rows affected (0.014 sec)MySQL [oceanbase] Bye[adminobce01 ~]$ obclient -h192.168.152.30 -urootobmysql -P2881 -pbJVqqEVt -c -A oceanbaseWelcome to the OceanBase. Commands end with ; or \g.Your MySQL connection id is 3221489906Server version: 5.7.25 OceanBase 3.1.0 (r3-b20901e8c84d3ea774beeaca963c67d7802e4b4e) (Built Aug 10 2021 08:10:38)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 databases;--------------------| Database |--------------------| oceanbase || information_schema || mysql || test |--------------------4 rows in set (0.005 sec)MySQL [oceanbase]ODC客户端 下载安装下载客户端版 ODC 新建连接串智能识别 obclient -h192.168.152.30 -urootobmysql -P2881 -pbJVqqEVt -c -A oceanbase