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

第五章:运维 OceanBase 数据库 5.7 如何使用 OBD 运维

387

5.7 如何使用 OBD 运维

如何使用 OBD 调整 OceanBase 集群参数

您可通过使用 OBD 调整 OceanBase 集群参数为集群节点内存扩容,以下示例介绍如何将集群节点内存从 8GB 扩容到 16GB。

  1. 使用 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

  2. 使用 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

  3. 登录 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)

  4. 确认集群可用内存变化

    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。

  5. 调大业务租户内存规格

    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 对集群扩容可分为如下几步:

  1. OBD 初始化新机器节点目录。

  2. OBD 启动旧集群节点。

  3. 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

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

评论