5.7 如何使用 OBD 运维
如何使用 OBD 调整 OceanBase 集群参数
您可通过使用 OBD 调整 OceanBase 集群参数为集群节点内存扩容,以下示例介绍如何将集群节点内存从 8GB 扩容到 16GB。
- 使用 OBD 命令编辑参数文件
obd cluster edit-config obce-3zones # 修改: memory_limit: 16G # The maximum running memory for an observer # 保存: oceanbase-ce-3.1.0 already installed. obproxy-3.1.0 already installed. Search param plugin and load ok Parameter check ok Save deploy "obce-3zones" configuration
- 使用 OBD 命令 reload 参数
obd cluster reload obce-3zones # 输出: Get local repositories and plugins ok Open ssh connection ok Cluster status check ok Connect to observer ok Connect to obproxy ok obce-3zones reload
- 登录 sys 租户确认参数变更
MySQL [oceanbase]> show parameters like 'memory_limit'; +-------+----------+---------------+----------+--------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | +-------+----------+---------------+----------+--------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ | zone2 | observer | 172.20.249.49 | 2882 | memory_limit | NULL | 16G | the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [8G,) | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | | zone1 | observer | 172.20.249.52 | 2882 | memory_limit | NULL | 16G | the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [8G,) | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | | zone3 | observer | 172.20.249.51 | 2882 | memory_limit | NULL | 16G | the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [8G,) | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +-------+----------+---------------+----------+--------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ 3 rows in set (0.005 sec)
- 确认集群可用内存变化
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, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, usec_to_time(b.stop_time) stop_time, b.build_version 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 | last_offline_time | start_service_time | status | stop_time | build_version | +-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+----------------------------+------------------------------------------------------------------------+ | zone1 | 172.20.249.52:2882 | 14 | 0 | 13 | 8 | 1970-01-01 08:00:00.000000 | 2021-09-25 08:19:06.622351 | active | 1970-01-01 08:00:00.000000 | 3.1.0_3-b20901e8c84d3ea774beeaca963c67d7802e4b4e(Aug 10 2021 08:10:38) | | zone2 | 172.20.249.49:2882 | 14 | 0 | 13 | 8 | 1970-01-01 08:00:00.000000 | 2021-09-25 08:19:07.392669 | active | 1970-01-01 08:00:00.000000 | 3.1.0_3-b20901e8c84d3ea774beeaca963c67d7802e4b4e(Aug 10 2021 08:10:38) | | zone3 | 172.20.249.51:2882 | 14 | 0 | 13 | 8 | 1970-01-01 08:00:00.000000 | 2021-09-26 14:05:58.641570 | active | 1970-01-01 08:00:00.000000 | 3.1.0_3-b20901e8c84d3ea774beeaca963c67d7802e4b4e(Aug 10 2021 08:10:38) | +-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+----------------------------+------------------------------------------------------------------------+ 3 rows in set (0.009 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 | 5 | 2 | 2 | 1 | zone1 | 172.20.249.52:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 5 | 2 | 2 | 2 | zone2 | 172.20.249.49:2882 | 1 | sys | | sys_pool | sys_unit_config | 5 | 5 | 2 | 2 | 3 | zone3 | 172.20.249.51:2882 | 1 | sys | | my_pool | unit1 | 9 | 9 | 3 | 3 | 1001 | zone1 | 172.20.249.52:2882 | 1002 | obmysql | | my_pool | unit1 | 9 | 9 | 3 | 3 | 1002 | zone2 | 172.20.249.49:2882 | 1002 | obmysql | | my_pool | unit1 | 9 | 9 | 3 | 3 | 1003 | zone3 | 172.20.249.51:2882 | 1002 | obmysql | +--------------------+------------------+---------+---------+------------+------------+---------+-------+--------------------+-----------+-------------+ 6 rows in set (0.010 sec)
从输出结果可以看出新增可用内存 8G。
- 调大业务租户内存规格
alter resource unit unit1 max_memory='11G',min_memory='11G'; # 重复查看集群可用内存 +-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+----------------------------+------------------------------------------------------------------------+ | zone | observer | cpu_total | cpu_free | mem_total_gb | mem_free_gb | last_offline_time | start_service_time | status | stop_time | build_version | +-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+----------------------------+------------------------------------------------------------------------+ | zone1 | 172.20.249.52:2882 | 14 | 0 | 13 | 0 | 1970-01-01 08:00:00.000000 | 2021-09-25 08:19:06.622351 | active | 1970-01-01 08:00:00.000000 | 3.1.0_3-b20901e8c84d3ea774beeaca963c67d7802e4b4e(Aug 10 2021 08:10:38) | | zone2 | 172.20.249.49:2882 | 14 | 0 | 13 | 0 | 1970-01-01 08:00:00.000000 | 2021-09-25 08:19:07.392669 | active | 1970-01-01 08:00:00.000000 | 3.1.0_3-b20901e8c84d3ea774beeaca963c67d7802e4b4e(Aug 10 2021 08:10:38) | | zone3 | 172.20.249.51:2882 | 14 | 0 | 13 | 0 | 1970-01-01 08:00:00.000000 | 2021-09-26 14:05:58.641570 | active | 1970-01-01 08:00:00.000000 | 3.1.0_3-b20901e8c84d3ea774beeaca963c67d7802e4b4e(Aug 10 2021 08:10:38) | +-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+----------------------------+------------------------------------------------------------------------+ 3 rows in set (0.005 sec)
如何使用 OBD 对 OceanBase 集群或 ODP 集群扩容
使用 OBD 对 OceanBase 集群扩容主要是通过增加每个 Zone 内的节点数来实现。前面已经介绍过集群扩容手动步骤,这里主要是介绍使用 OBD 工具进行扩容的操作步骤。
注意
OBD 的定位并不是运维工具,所以对于集群扩容节点并不是特别顺畅。
使用 OBD 对集群扩容可分为如下几步:
- OBD 初始化新机器节点目录。
- OBD 启动旧集群节点。
- OceanBase 集群添加新节点
在进行扩容操作之前,您需先查看当前部署的集群信息。
[admin@obce00 ~]$ obd cluster display obce-3zones Get local repositories and plugins ok Open ssh connection ok Cluster status check ok Connect to observer ok Wait for observer init ok +-------------------------------------------------+ | observer | +---------------+---------+------+-------+--------+ | ip | version | port | zone | status | +---------------+---------+------+-------+--------+ | 172.20.249.49 | 3.1.0 | 2881 | zone2 | active | | 172.20.249.51 | 3.1.0 | 2881 | zone3 | active | | 172.20.249.52 | 3.1.0 | 2881 | zone1 | active | +---------------+---------+------+-------+--------+ Connect to obproxy ok +-------------------------------------------------+ | obproxy | +---------------+------+-----------------+--------+ | ip | port | prometheus_port | status | +---------------+------+-----------------+--------+ | 172.20.249.52 | 2883 | 2884 | active | | 172.20.249.49 | 2883 | 2884 | active | | 172.20.249.51 | 2883 | 2884 | active | +---------------+------+-----------------+--------+ [admin@obce00 ~]$ obd --version OceanBase Deploy: 1.1.0 REVISION: BUILD_BRANCH: BUILD_TIME: Aug 10 2021 11:50:40OURCE Copyright (C) 2021 OceanBase License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
OBD 初始化新机器节点目录
当给集群扩容节点时,建议每个 Zone 新增相同配置的机器,但是不能直接在现有配置文件中编辑。当前版本(1.1.0
)采取的方式是复制现有的配置文件为新文件,然后修改配置文件中的 servers
下的 IP 为新的 IP。如果 ODP 集群不扩容,就删除 ODP 配置节。
之后运行 obd cluster deploy
命令。deploy
命令会自动在新节点安装 OceanBase 软件包、初始化相关目录。
obd cluster deploy obce-3zones2 -c obce-3zones2.yaml
注意
deploy 成功后,不要运行 obd cluster start
命令,否则会初始化一个新的集群,不符合原本的目的。
OBD 启动旧集群节点
此时需要使用命令 obd cluster edit-config
编辑当前运行的集群的配置文件,在 servers
下加入新的节点 IP,新 IP 紧跟在旧的 IP 之后(注意换行)。
然后针对旧集群运行 obd cluster start
命令。运行该命令会启动集群中所有节点,如果节点的进程已经启动,就会跳过。所以,只会启动新增节点的进程。
obd cluster start obce-3zones
OceanBase 集群添加新节点
对于 OceanBase 集群扩容节点,还需要在集群 sys 租户里运行如下命令添加新的节点到相应 Zone 里。
ALTER SYSTEM ADD SERVER '节点IP:RPC端口' ZONE '节点所属Zone'; # 例如 alter system add server '11.166.87.5:2882' zone 'zone1';
运行以上命令后,查看节点状态可以看到新节点的状态是 active
。
想了解更多干货,可通过下方扫码关注
可扫码添加上智启元官方客服微信👇