OceanBase 环境基本都会先安装 OCP 来部署、监控、运维数据库集群。但如果有机器过保等问题,就需要有平稳的 OCP 节点的替换方案。
作者:张瑞远
上海某公司 DBA,曾经从事银行、证券数仓设计、开发、优化类工作,现主要从事电信级 IT 系统及数据库工作。有三年以上 OceanBase 工作经验。获得的专业技能与认证包括 OceanBase OBCP、Oracle OCP 11g、OracleOCM 11g 、MySQL OCP 5.7。
本文来源:原创投稿
- 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
前言
OceanBase 云平台(OceanBase Cloud Platform,OCP),是以 OceanBase 为核心的企业级数据库管理平台。
我们生产环境基本都是需要先创建 OCP 平台,然后依赖 OCP 去创建及管理监控生产集群,所以安装 OCP 一般是系统上线的第一步。之后可能随着机房规划等问题,就会有需要搬迁或者替换 OCP 的机器的需求。
分别介绍两种 OCP 节点的替换方法。一种是使用 OAT 平台(OceanBase Admin Toolkit,管理者工具)来替换;另一种就是使用 ANTMAN 工具替换。上次我们介绍了第一种 OAT 的方案,本文介绍第二种。
PS:我的环境的 OCP 负载均衡使用的 F5,所以新的机器需要先配置 F5,其他负载均衡场景同理。
环境背景
大家如果有接触 OB 生产环境的经验的话,可能会了解,前期版本在安装 OCP 的时候,需要安装 OCP 软件/metadb/obproxy 三个 Docker 包,后期 OCP 版本将 DB+Proxy 集成在了一个 Docker 包里,OAT 的话只能纳管 DB + Proxy。集成的 metadb,分开的情况还需要使用 ANTMAN 工具来替换。
软件信息
| 软件 | 版本 |
|---|---|
| OCP | ocp-all-in-one:3.3.3-20220906114643 |
| metadb+proxy | OB2277_OBP320_x86_20220429 |
| Proxy | 4.1.1_20230519_x86 |
| antman | t-oceanbase-antman-1.4.3-20220807073355.alios7.x86_64 |
操作过程
3.1 环境检查/准备
检查替换机器环境,包括分盘,创建 admin 用户,安装 Docker 软件等。安装好后检查下。
cd /root/t-oceanbase-antman/clonescripts/
sh precheck.sh -m ocp
登录 meta 库检查有没有 tenant 的主 ZONE 在要被替换的节点,提前切主。
MySQL [oceanbase]> select * from __all_Server;
+----------------------------+----------------------------+--------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+
| gmt_create | gmt_modified | svr_ip | svr_port | id | zone | inner_port | with_rootserver | status | block_migrate_in_time | build_version | stop_time | start_service_time | first_sessid | with_partition | last_offline_time |
+----------------------------+----------------------------+--------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+
| 2022-03-17 22:59:19.979627 | 2023-03-20 10:27:01.147283 | 10.10.100.87 | 2882 | 6 | META_OB_ZONE_2 | 2881 | 0 | active | 0 | 2.2.76_20210406232249-a1e144bdc179fbf473cea37f199e8a76c736b8d4(Apr 6 2021 23:55:12) | 0 | 1679279220991796 | 0 | 1 | 1679278517144838 |
| 2022-03-17 23:54:49.277939 | 2023-03-20 09:29:22.079578 | 10.10.100.9 | 2882 | 7 | META_OB_ZONE_1 | 2881 | 1 | active | 0 | 2.2.76_20210406232249-a1e144bdc179fbf473cea37f199e8a76c736b8d4(Apr 6 2021 23:55:12) | 0 | 1679275725595691 | 0 | 1 | 0 |
| 2021-12-21 22:44:16.476503 | 2023-03-20 09:29:22.080425 | 122.44.11.2 | 2882 | 5 | META_OB_ZONE_3 | 2881 | 0 | active | 0 | 2.2.76_20210406232249-a1e144bdc179fbf473cea37f199e8a76c736b8d4(Apr 6 2021 23:55:12) | 0 | 1640097866698859 | 0 | 1 | 0 |
+----------------------------+----------------------------+--------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+
MySQL [oceanbase]> select tenant_name,primary_zone from __all_tenant;
+----------------+----------------------------------------------+
| tenant_name | primary_zone |
+----------------+----------------------------------------------+
| sys | META_OB_ZONE_1;META_OB_ZONE_3;META_OB_ZONE_2 |
| ocp_meta | META_OB_ZONE_1;META_OB_ZONE_3;META_OB_ZONE_2 |
| ocp_monitor | META_OB_ZONE_1;META_OB_ZONE_3;META_OB_ZONE_2 |
| oms_tt_tenant | META_OB_ZONE_1;META_OB_ZONE_3;META_OB_ZONE_2 |
| oms_cc7_tenant | META_OB_ZONE_3;META_OB_ZONE_2;META_OB_ZONE_1 |
| oms_ff9_tenant | META_OB_ZONE_1;META_OB_ZONE_2,META_OB_ZONE_3 |
| oms_cc9_tenant | META_OB_ZONE_3;META_OB_ZONE_1,META_OB_ZONE_2 |
| oms_dd_tenant | META_OB_ZONE_3;META_OB_ZONE_1,META_OB_ZONE_2 |
| obdw_meta | META_OB_ZONE_3;META_OB_ZONE_1,META_OB_ZONE_2 |
+----------------+----------------------------------------------+
MySQL [oceanbase]> alter tenant sys primary_zone='META_OB_ZONE_2;META_OB_ZONE_3,META_OB_ZONE_1';
Query OK, 0 rows affected (0.04 sec)
MySQL [oceanbase]> alter tenant ocp_meta primary_zone='META_OB_ZONE_2;META_OB_ZONE_3,META_OB_ZONE_1';
Query OK, 0 rows affected (1.27 sec)
MySQL [oceanbase]> alter tenant ocp_monitor primary_zone='META_OB_ZONE_2;META_OB_ZONE_3,META_OB_ZONE_1';
Query OK, 0 rows affected (0.02 sec)
MySQL [oceanbase]> alter tenant oms_tt_tenant primary_zone='META_OB_ZONE_2;META_OB_ZONE_3,META_OB_ZONE_1';
Query OK, 0 rows affected (0.03 sec)
MySQL [oceanbase]> alter tenant oms_ff9_tenant primary_zone='META_OB_ZONE_2;META_OB_ZONE_3,META_OB_ZONE_1';
Query OK, 0 rows affected (0.03 sec)
因为使用 ANTMAN 工具迁移,需要在执行机器上修改 obcluster.conf 文件,或者直接从原 OCP 上 copy 后检查下,镜像包也需要传到该机器 /root/t-oceanbase-antman 目录下。
55obffocp:~/t-oceanbase-antman # cat obcluster.conf
ZONE1_RS_IP=10.10.100.9
ZONE2_RS_IP=10.10.100.87
ZONE3_RS_IP=122.44.11.2
###### 自动配置,无需修改 / AUTO-CONFIGURATION ######
OBSERVER01_HOSTNAME=OCP_META_SERVER_1
OBSERVER02_HOSTNAME=OCP_META_SERVER_2
OBSERVER03_HOSTNAME=OCP_META_SERVER_3
ZONE1_NAME=META_OB_ZONE_1 --后续命令参数,主要和参数文件中对上
ZONE2_NAME=META_OB_ZONE_2
ZONE3_NAME=META_OB_ZONE_3
##there must be more than half zone within same region
ZONE1_REGION=OCP_META_REGION
ZONE2_REGION=OCP_META_REGION
ZONE3_REGION=OCP_META_REGION
MYSQL_PORT=2881
RPC_PORT=2882
OCP_VERSION=3.3.3
检查执行 ANTMAN 脚本机器上默认集群密码是否正确。cd ~/t-oceanbase-antman/tools,执行 getpass.sh 的脚本,如果不对需要使用 setpass.sh 修改,因为后续 Proxy 的 Docker 迁移后会有验证,OCP 的 Docker 迁移前也会验证。
55obffocp:~/t-oceanbase-antman/tools # bash setpass.sh -s 0Aa255yK^F
password file sys in /root/.key already exist!
**********************
Passwor

本文介绍了如何使用ANTMAN工具来替换OceanBase环境中的OCP节点,包括环境检查、添加新机器、新增租户、替换下线和清理残留服务的详细步骤,以及在过程中遇到的问题和解决方案。
最低0.47元/天 解锁文章
536

被折叠的 条评论
为什么被折叠?



