一步一步学习OceanBase系列回顾:
第一篇:OceanBase 1.4 集群手动安装步骤
第二篇:obproxy的安装、配置和使用
第三篇:OceanBase 1.4 集群——租户的创建和使用
第四篇:OceanBase1.4 集群扩容
本篇是第五篇 ob1.4集群下,实操体验租户的扩容。
oceanbase 1.4集群下,租户扩容 一般在生产环境下,如果业务觉得数据库响应慢且瓶颈是在资源,当整个oceanbase集群资源大池还有剩余资源时,则可以对租户的资源能力进行扩容。 当ob集群整个资源大池资源也不够的话,就需要先添加节点,进行集群扩容(如上一篇文章集群扩容介绍),然后再对租户资源进行扩容。 租户扩容有两种方式:一是提升资源单元规格,二是增加资源单元数量。 1、租户内查看自己的资源能力 $ mysql -h192.168.0.151 -uroot@my_test_tent#obdemo -P2883 -padmin123 -c -A oceanbase Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 25 Server version: 5.6.25 OceanBase 1.4.60 (r1571952-758a58e85846f9efb907b1c14057204cb6353846) (Built Mar 9 2018 14:32:07) 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 tenant_id,tenant_name, unit_id, zone, svr_ip,svr_port,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, -> round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb -> from gv$unit; +-----------+--------------+---------+-------+---------------+----------+---------+---------+------------+------------+------------------+ | tenant_id | tenant_name | unit_id | zone | svr_ip | svr_port | max_cpu | min_cpu | max_mem_gb | min_mem_gb | max_disk_size_gb | +-----------+--------------+---------+-------+---------------+----------+---------+---------+------------+------------+------------------+ | 1001 | my_test_tent | 1001 | zone1 | 192.168.0.106 | 2882 | 2 | 1 | 3 | 2 | 10 | | 1001 | my_test_tent | 1002 | zone2 | 192.168.0.89 | 2882 | 2 | 1 | 3 | 2 | 10 | | 1001 | my_test_tent | 1003 | zone3 | 192.168.0.143 | 2882 | 2 | 1 | 3 | 2 | 10 | +-----------+--------------+---------+-------+---------------+----------+---------+---------+------------+------------+------------------+ 3 rows in set (0.02 sec) MySQL [oceanbase]> 2、登录sys租户查看租户扩容前整个OB集群情况: $ mysql -h192.168.0.151 -uroot@sys#obdemo -P2883 -padmin123 -c -A oceanbase 查看OB集群所有observer节点信息 MySQL [oceanbase]> select zone,svr_ip,svr_port,inner_port,with_rootserver,status,gmt_create from __all_server order by zone, svr_ip; +-------+---------------+----------+------------+-----------------+--------+----------------------------+ | zone | svr_ip | svr_port | inner_port | with_rootserver | status | gmt_create | +-------+---------------+----------+------------+-----------------+--------+----------------------------+ | zone1 | 192.168.0.106 | 2882 | 2881 | 0 | active | 2020-08-07 18:21:17.519966 | | zone1 | 192.168.0.151 | 2882 | 2881 | 1 | active | 2020-08-07 11:30:28.623847 | | zone2 | 192.168.0.43 | 2882 | 2881 | 0 | active | 2020-08-07 11:30:28.604907 | | zone2 | 192.168.0.89 | 2882 | 2881 | 0 | active | 2020-08-07 18:21:23.741350 | | zone3 | 192.168.0.143 | 2882 | 2881 | 0 | active | 2020-08-07 18:21:29.227633 | | zone3 | 192.168.0.41 | 2882 | 2881 | 0 | active | 2020-08-07 11:30:28.613459 | +-------+---------------+----------+------------+-----------------+--------+----------------------------+ 6 rows in set (0.01 sec) 查看OB集群所有租户 MySQL [oceanbase]> select tenant_id, tenant_name, zone_list, locality ,gmt_modified from __all_tenant; +-----------+--------------+-------------------+---------------------------------------------+----------------------------+ | tenant_id | tenant_name | zone_list | locality | gmt_modified | +-----------+--------------+-------------------+---------------------------------------------+----------------------------+ | 1 | sys | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | 2020-08-07 11:30:29.946393 | | 1001 | my_test_tent | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | 2020-08-07 14:00:48.039985 | +-----------+--------------+-------------------+---------------------------------------------+----------------------------+ 2 rows in set (0.01 sec) 查看OceanBase集群所有节点可用资源情况 MySQL [oceanbase]> select zone, svr_ip, svr_port,inner_port, cpu_total, cpu_assigned, -> round(mem_total/1024/1024/1024) mem_total_gb, -> round(mem_assigned/1024/1024/1024) mem_ass_gb, -> round(disk_total/1024/1024/1024) disk_total_gb, -> unit_num, substr(build_version,1,6) version -> from __all_virtual_server_stat -> order by zone, svr_ip, inner_port; +-------+---------------+----------+------------+-----------+--------------+--------------+------------+---------------+----------+---------+ | zone | svr_ip | svr_port | inner_port | cpu_total | cpu_assigned | mem_total_gb | mem_ass_gb | disk_total_gb | unit_num | version | +-------+---------------+----------+------------+-----------+--------------+--------------+------------+---------------+----------+---------+ | zone1 | 192.168.0.106 | 2882 | 2881 | 6 | 1 | 10 | 2 | 83 | 1 | 1.4.60 | | zone1 | 192.168.0.151 | 2882 | 2881 | 6 | 2.5 | 10 | 2 | 83 | 1 | 1.4.60 | | zone2 | 192.168.0.43 | 2882 | 2881 | 6 | 2.5 | 10 | 2 | 83 | 1 | 1.4.60 | | zone2 | 192.168.0.89 | 2882 | 2881 | 6 | 1 | 10 | 2 | 83 | 1 | 1.4.60 | | zone3 | 192.168.0.143 | 2882 | 2881 | 6 | 1 | 10 | 2 | 83 | 1 | 1.4.60 | | zone3 | 192.168.0.41 | 2882 | 2881 | 6 | 2.5 | 10 | 2 | 83 | 1 | 1.4.60 | +-------+---------------+----------+------------+-----------+--------------+--------------+------------+---------------+----------+---------+ 6 rows in set (0.00 sec) MySQL [oceanbase]> 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 | 192.168.0.106:2882 | 6 | 5 | 10 | 8 | 83 | 1.4.60 | 2020-08-09 10:28:38.058235 | | zone1 | 192.168.0.151:2882 | 6 | 3.5 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:27:09.728171 | | zone2 | 192.168.0.43:2882 | 6 | 3.5 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:27:11.822337 | | zone2 | 192.168.0.89:2882 | 6 | 5 | 10 | 8 | 83 | 1.4.60 | 2020-08-09 10:28:38.418461 | | zone3 | 192.168.0.143:2882 | 6 | 5 | 10 | 8 | 83 | 1.4.60 | 2020-08-09 10:28:48.238842 | | zone3 | 192.168.0.41:2882 | 6 | 3.5 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:27:25.831402 | +-------+--------------------+-----------+----------+--------------+-------------+---------------+---------+----------------------------+ 6 rows in set (0.00 sec) 查看集群资源池具体使用情况 MySQL [oceanbase]> 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 | 3 | 2 | 1 | zone1 | 192.168.0.151:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 3 | 2 | 2 | zone2 | 192.168.0.43:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 3 | 2 | 3 | zone3 | 192.168.0.41:2882 | 1 | sys | | my_pool_test | my_unit_1c2g | 2 | 1 | 3 | 2 | 1001 | zone1 | 192.168.0.106:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 2 | 1 | 3 | 2 | 1002 | zone2 | 192.168.0.89:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 2 | 1 | 3 | 2 | 1003 | zone3 | 192.168.0.143:2882 | 1001 | my_test_tent | +--------------------+------------------+---------+---------+------------+------------+---------+-------+--------------------+-----------+--------------+ 6 rows in set (0.00 sec) 查看OB集群资源单元unit配置情况 MySQL [oceanbase]> select unit_config_id,name,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, -> round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb -> from __all_unit_config -> order by unit_config_id; +----------------+-----------------+---------+---------+------------+------------+------------------+ | unit_config_id | name | max_cpu | min_cpu | max_mem_gb | min_mem_gb | max_disk_size_gb | +----------------+-----------------+---------+---------+------------+------------+------------------+ | 1 | sys_unit_config | 5 | 2.5 | 3 | 2 | 83 | | 1001 | my_unit_1c2g | 2 | 1 | 3 | 2 | 10 | +----------------+-----------------+---------+---------+------------+------------+------------------+ 2 rows in set (0.00 sec) MySQL [oceanbase]> 租户扩容前,从以上可以看出: 业务租户 my_test_tent 资源占用1cpu2g内存,所在节点106、89、143,还可用5cpu+8g内存。 系统sys租户资源占用2.5cpu+3g内存,所在节点151、43、41,还可用3.5cpu+7g内存。 业务租户my_test_tent下testdb库下,所有的表分区主备副本节点分布情况: MySQL [oceanbase]> SELECT t1.tenant_id,t1.tenant_name,t2.database_name,t3.table_id,t3.table_Name,t3.tablegroup_id,t3.part_num,t4.partition_Id, -> t4.zone,t4.svr_ip,t4.role, round(t4.data_size/1024/1024) data_size_mb -> from `gv$tenant` t1 -> join `gv$database` t2 on (t1.tenant_id = t2.tenant_id) -> join gv$table t3 on (t2.tenant_id = t3.tenant_id and t2.database_id = t3.database_id and t3.index_type = 0) -> left join `gv$partition` t4 on (t2.tenant_id = t4.tenant_id and ( t3.table_id = t4.table_id or t3.tablegroup_id = t4.table_id ) and t4.role in (1,2)) -> where t1.tenant_id = 1001 -> order by t3.tablegroup_id, t3.table_name,t4.partition_Id ; +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ | tenant_id | tenant_name | database_name | table_id | table_Name | tablegroup_id | part_num | partition_Id | zone | svr_ip | role | data_size_mb | +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone2 | 192.168.0.89 | 2 | 0 | +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ 12 rows in set (0.05 sec) MySQL [oceanbase]> my_test_tent下testdb库,非分区表test的p0号分区,主副本在zone1下的106节点,两个备副本在节点89、143。 test_hash分区表的p0-p2三个分区的主副本也都在zone1下的106节点,两个备副本在节点89、143。 3、开始租户扩容 租户扩容有两个思路,一是提升资源单元规格,二是增加资源单元数量。 mysql -h192.168.0.151 -uobdemo:sys:root -P2883 -padmin123 -c -A oceanbase 方式一:增大unit规格 create resource unit my_unit_2c3g20g max_cpu=3, min_cpu=2, max_memory='5g', min_memory='3g', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='20g'; alter resource pool my_pool_test unit = 'my_unit_2c3g20g'; 也可以直接修改: alter resource unit my_unit_1c2g max_cpu=3, min_cpu=2, max_memory='5g', min_memory='3g',max_disk_size='20g'; 方式二:增加unit_num个数 alter resource pool my_pool_test unit_num = 2; 缩容同理 减少unit_num个数或降低unit规格 alter resource pool my_pool_test unit_num = 1; 租户扩容示例: 这里体验直接修改unit大小和个数,来实现租户的扩容。 alter resource unit my_unit_1c2g max_cpu=3, min_cpu=2, max_memory='5g', min_memory='3g',max_disk_size='20g'; alter resource pool my_pool_test unit_num = 2; 以下是实操步骤,最终比对租户扩容后,数据分区分布情况: $ mysql -h192.168.0.151 -uroot@sys#obdemo -P2883 -padmin123 -c -A oceanbase MySQL [oceanbase]> select unit_config_id,name,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb -> from __all_unit_config -> order by unit_config_id; +----------------+-----------------+---------+---------+------------+------------+------------------+ | unit_config_id | name | max_cpu | min_cpu | max_mem_gb | min_mem_gb | max_disk_size_gb | +----------------+-----------------+---------+---------+------------+------------+------------------+ | 1 | sys_unit_config | 5 | 2.5 | 3 | 2 | 83 | | 1001 | my_unit_config | 2 | 1 | 3 | 2 | 10 | +----------------+-----------------+---------+---------+------------+------------+------------------+ 2 rows in set (0.00 sec) MySQL [oceanbase]> --修改unit大小 MySQL [oceanbase]> alter resource unit my_unit_1c2g max_cpu=3, min_cpu=2, max_memory='5g', min_memory='3g',max_disk_size='20g'; Query OK, 0 rows affected (0.00 sec) MySQL [oceanbase]> select unit_config_id,name,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb -> from __all_unit_config -> order by unit_config_id; +----------------+-----------------+---------+---------+------------+------------+------------------+ | unit_config_id | name | max_cpu | min_cpu | max_mem_gb | min_mem_gb | max_disk_size_gb | +----------------+-----------------+---------+---------+------------+------------+------------------+ | 1 | sys_unit_config | 5 | 2.5 | 3 | 2 | 83 | | 1001 | my_unit_config | 3 | 2 | 5 | 3 | 20 | +----------------+-----------------+---------+---------+------------+------------+------------------+ 2 rows in set (0.00 sec) MySQL [oceanbase]> --修改unit大小后,查看资源可用情况: MySQL [oceanbase]> 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 | 192.168.0.106:2882 | 6 | 4 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:28:38.058235 | | zone1 | 192.168.0.151:2882 | 6 | 3.5 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:27:09.728171 | | zone2 | 192.168.0.43:2882 | 6 | 3.5 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:27:11.822337 | | zone2 | 192.168.0.89:2882 | 6 | 4 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:28:38.418461 | | zone3 | 192.168.0.143:2882 | 6 | 4 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:28:48.238842 | | zone3 | 192.168.0.41:2882 | 6 | 3.5 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:27:25.831402 | +-------+--------------------+-----------+----------+--------------+-------------+---------------+---------+----------------------------+ 6 rows in set (0.00 sec) MySQL [oceanbase]> MySQL [oceanbase]> 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 | 3 | 2 | 1 | zone1 | 192.168.0.151:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 3 | 2 | 2 | zone2 | 192.168.0.43:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 3 | 2 | 3 | zone3 | 192.168.0.41:2882 | 1 | sys | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1001 | zone1 | 192.168.0.106:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1002 | zone2 | 192.168.0.89:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1003 | zone3 | 192.168.0.143:2882 | 1001 | my_test_tent | +--------------------+------------------+---------+---------+------------+------------+---------+-------+--------------------+-----------+--------------+ 6 rows in set (0.00 sec) MySQL [oceanbase]> 从以上可以看出,增大unit大小后,即每个unit资源单元大小调整为2cpu+3g内存。 业务租户 my_test_tent 资源占用2-3个cpu,3-5g内存,所在节点106、89、143,还可用4cpu+7g内存。 系统sys租户所在节点151、43、41,还可用3.5cpu+7g内存。 --再调整unit个数 MySQL [oceanbase]> alter resource pool my_pool_test unit_num = 2; Query OK, 0 rows affected (0.02 sec) MySQL [oceanbase]> select unit_config_id,name,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb -> from __all_unit_config -> order by unit_config_id; +----------------+-----------------+---------+---------+------------+------------+------------------+ | unit_config_id | name | max_cpu | min_cpu | max_mem_gb | min_mem_gb | max_disk_size_gb | +----------------+-----------------+---------+---------+------------+------------+------------------+ | 1 | sys_unit_config | 5 | 2.5 | 3 | 2 | 83 | | 1001 | my_unit_config | 3 | 2 | 5 | 3 | 20 | +----------------+-----------------+---------+---------+------------+------------+------------------+ 2 rows in set (0.00 sec) 查看资源可用情况: MySQL [oceanbase]> select zone, svr_ip, svr_port,inner_port, cpu_total, cpu_assigned, -> round(mem_total/1024/1024/1024) mem_total_gb, -> round(mem_assigned/1024/1024/1024) mem_ass_gb, -> round(disk_total/1024/1024/1024) disk_total_gb, -> unit_num, substr(build_version,1,6) version -> from __all_virtual_server_stat -> order by zone, svr_ip, inner_port; +-------+---------------+----------+------------+-----------+--------------+--------------+------------+---------------+----------+---------+ | zone | svr_ip | svr_port | inner_port | cpu_total | cpu_assigned | mem_total_gb | mem_ass_gb | disk_total_gb | unit_num | version | +-------+---------------+----------+------------+-----------+--------------+--------------+------------+---------------+----------+---------+ | zone1 | 192.168.0.106 | 2882 | 2881 | 6 | 2 | 10 | 3 | 83 | 1 | 1.4.60 | | zone1 | 192.168.0.151 | 2882 | 2881 | 6 | 4.5 | 10 | 5 | 83 | 2 | 1.4.60 | | zone2 | 192.168.0.43 | 2882 | 2881 | 6 | 4.5 | 10 | 5 | 83 | 2 | 1.4.60 | | zone2 | 192.168.0.89 | 2882 | 2881 | 6 | 2 | 10 | 3 | 83 | 1 | 1.4.60 | | zone3 | 192.168.0.143 | 2882 | 2881 | 6 | 2 | 10 | 3 | 83 | 1 | 1.4.60 | | zone3 | 192.168.0.41 | 2882 | 2881 | 6 | 4.5 | 10 | 5 | 83 | 2 | 1.4.60 | +-------+---------------+----------+------------+-----------+--------------+--------------+------------+---------------+----------+---------+ 6 rows in set (0.00 sec) MySQL [oceanbase]> MySQL [oceanbase]> 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 | 192.168.0.106:2882 | 6 | 4 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:28:38.058235 | | zone1 | 192.168.0.151:2882 | 6 | 1.5 | 10 | 4 | 83 | 1.4.60 | 2020-08-09 10:27:09.728171 | | zone2 | 192.168.0.43:2882 | 6 | 1.5 | 10 | 4 | 83 | 1.4.60 | 2020-08-09 10:27:11.822337 | | zone2 | 192.168.0.89:2882 | 6 | 4 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:28:38.418461 | | zone3 | 192.168.0.143:2882 | 6 | 4 | 10 | 7 | 83 | 1.4.60 | 2020-08-09 10:28:48.238842 | | zone3 | 192.168.0.41:2882 | 6 | 1.5 | 10 | 4 | 83 | 1.4.60 | 2020-08-09 10:27:25.831402 | +-------+--------------------+-----------+----------+--------------+-------------+---------------+---------+----------------------------+ 6 rows in set (0.00 sec) MySQL [oceanbase]> 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 | 3 | 2 | 1 | zone1 | 192.168.0.151:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 3 | 2 | 2 | zone2 | 192.168.0.43:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 2.5 | 3 | 2 | 3 | zone3 | 192.168.0.41:2882 | 1 | sys | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1001 | zone1 | 192.168.0.106:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1002 | zone2 | 192.168.0.89:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1003 | zone3 | 192.168.0.143:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1004 | zone1 | 192.168.0.151:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1005 | zone2 | 192.168.0.43:2882 | 1001 | my_test_tent | | my_pool_test | my_unit_1c2g | 3 | 2 | 5 | 3 | 1006 | zone3 | 192.168.0.41:2882 | 1001 | my_test_tent | +--------------------+------------------+---------+---------+------------+------------+---------+-------+--------------------+-----------+--------------+ 9 rows in set (0.01 sec) MySQL [oceanbase]> 从以上结果可以看出,由于每个unit资源单元大小为2cpu+3g内存,每个zone下的observer节点都可以再分配一个此大小的unit单元资源。 当unit_num修改为2个后,整个OB集群下observer资源再次发生了改变。 业务租户 my_test_tent 资源占用2-3个cpu,3-5g内存,从之前只在节点106、89、143上,变为所有6个节点都有分布了。 再次体现了OceanBase集群负载均衡的特点。 最终租户扩容后, 节点106、89、143,还可用4cpu+7g内存,此三个节点上只分布有业务租户my_test_tent。 节点151、43、41,还可用1.5cpu+4g内存,此三个节点上分布有系统sys租户和业务租户my_test_tent。 4、最后,再来看业务租户my_test_tent下的testdb库所有分区主备副本的变化情况: 租户扩容前,业务租户my_test_tent下testdb库下,所有的表分区主备副本节点分布情况: MySQL [oceanbase]> SELECT t1.tenant_id,t1.tenant_name,t2.database_name,t3.table_id,t3.table_Name,t3.tablegroup_id,t3.part_num,t4.partition_Id, -> t4.zone,t4.svr_ip,t4.role, round(t4.data_size/1024/1024) data_size_mb -> from `gv$tenant` t1 -> join `gv$database` t2 on (t1.tenant_id = t2.tenant_id) -> join gv$table t3 on (t2.tenant_id = t3.tenant_id and t2.database_id = t3.database_id and t3.index_type = 0) -> left join `gv$partition` t4 on (t2.tenant_id = t4.tenant_id and ( t3.table_id = t4.table_id or t3.tablegroup_id = t4.table_id ) and t4.role in (1,2)) -> where t1.tenant_id = 1001 -> order by t3.tablegroup_id, t3.table_name,t4.partition_Id ; +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ | tenant_id | tenant_name | database_name | table_id | table_Name | tablegroup_id | part_num | partition_Id | zone | svr_ip | role | data_size_mb | +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone1 | 192.168.0.106 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone2 | 192.168.0.89 | 2 | 0 | +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ 12 rows in set (0.05 sec) MySQL [oceanbase]> 租户扩容前,my_test_tent下testdb库,非分区表test的p0号分区,主副本在zone1下的106节点,两个备副本都在节点89、143。 test_hash分区表的p0-p2三个分区的主副本也都在zone1下的106节点,两个备副本都在节点89、143。 租户扩容后: MySQL [oceanbase]> SELECT t1.tenant_id,t1.tenant_name,t2.database_name,t3.table_id,t3.table_Name,t3.tablegroup_id,t3.part_num,t4.partition_Id, -> t4.zone,t4.svr_ip,t4.role, round(t4.data_size/1024/1024) data_size_mb -> from `gv$tenant` t1 -> join `gv$database` t2 on (t1.tenant_id = t2.tenant_id) -> join gv$table t3 on (t2.tenant_id = t3.tenant_id and t2.database_id = t3.database_id and t3.index_type = 0) -> left join `gv$partition` t4 on (t2.tenant_id = t4.tenant_id and ( t3.table_id = t4.table_id or t3.tablegroup_id = t4.table_id ) and t4.role in (1,2)) -> where t1.tenant_id = 1001 -> order by t3.tablegroup_id, t3.table_name,t4.partition_Id ; +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ | tenant_id | tenant_name | database_name | table_id | table_Name | tablegroup_id | part_num | partition_Id | zone | svr_ip | role | data_size_mb | +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone3 | 192.168.0.143 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453777 | test | -1 | 1 | 0 | zone1 | 192.168.0.106 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone2 | 192.168.0.89 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone1 | 192.168.0.151 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 0 | zone3 | 192.168.0.143 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone2 | 192.168.0.43 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone3 | 192.168.0.143 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 1 | zone1 | 192.168.0.106 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone3 | 192.168.0.41 | 1 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone1 | 192.168.0.106 | 2 | 0 | | 1001 | my_test_tent | testdb | 1100611139453778 | test_hash | -1 | 3 | 2 | zone2 | 192.168.0.89 | 2 | 0 | +-----------+--------------+---------------+------------------+------------+---------------+----------+--------------+-------+---------------+------+--------------+ 12 rows in set (0.06 sec) MySQL [oceanbase]> 租户扩容后,my_test_tent下testdb库,非分区表test的p0号分区,主备副本进行了切换,新的主副本从zone1下的106节点切换到了zone3下的143节点,两个备副本在zone1的106节点和zone2的89节点。 test_hash分区表的p0-p2三个分区的主备副本也都重新进行了分布: test_hash分区表的p0分区主副本在zone1下的151节点,两个备副本在zone2的89节点和zone3的143节点。 test_hash分区表的p1分区主副本在zone3下的143节点,两个备副本在zone1的106节点和zone2的43节点。 test_hash分区表的p2分区主副本在zone3下的41节点。两个备副本在zone1的106节点和zone2的89节点。
复制
6、最后以图形式,来展现租户扩容前后资源的分布和表数据分区的分布情况
(1)、租户扩容前:
(2)、租户扩容后:
到此OB1.4集群租户扩容已完成。 本次OceanBase 1.4集群租户扩容体验,到此结束。 一步一步学习OceanBase系列 下一篇准备进行oceanbase高可用体验————节点故障,数据是怎样自动恢复和转移。。 下次实操继续更新~~~~~
复制
最后修改时间:2020-08-11 09:46:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月国产数据库大事记:4个千万级中标项目诞生!2024年达梦净利3.6亿、金仓净利8006.6万……
墨天轮编辑部
2285次阅读
2025-04-30 17:39:54
2025年5月中国数据库流行度排行榜:OB一枝独秀破 800,金仓奋起直追跻四强
墨天轮编辑部
1099次阅读
2025-05-13 10:55:54
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
797次阅读
2025-04-30 15:24:06
919万!南航信息中心采购OceanBase数据库软件许可及服务
通讯员
292次阅读
2025-04-29 16:13:34
AI关键场景得到全面支持!OceanBase入选Forrester报告三大领域代表厂商
OceanBase数据库
264次阅读
2025-04-19 22:27:54
QPlus V6.3 更新,新增PostgreSQL与PolarDB PG支持,OceanBase 容灾管理重磅上线
沃趣科技
263次阅读
2025-05-13 09:39:27
1364万!2024年中国联通软研院OceanBase扩容单一来源采购公示
通讯员
186次阅读
2025-04-21 15:55:59
Oceanbase单机版上手示例
潇湘秦
186次阅读
2025-04-18 13:40:24
OceanBase创始人阳振坤荣誉退休!曾从0到1发起自研国产分布式数据库,攻克了分布式数据库的核心技术壁垒
通讯员
160次阅读
2025-05-13 14:10:49
CloudDM v2.3.0.0 全新发布,支持 OceanBase For Oracle 和 Oracle
ClouGence
138次阅读
2025-04-27 11:04:16