关于oceanbase:使用-OAT-工具替换-OceanBase-云平台节点

39次阅读

共计 7547 个字符,预计需要花费 19 分钟才能阅读完成。

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 脚本替换。本文先介绍第一种。

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
OAT 4.1.1_20230519_x86

操作过程

3.1 环境查看 / 筹备

查看替换机器环境,包含分盘,创立 admin 用户,装置 Docker 软件等。装置好后查看下。

cd /root/t-oceanbase-antman/clonescripts/
sh precheck.sh -m ocp

装置 OAT 工具

# 1.    上传 OAT 软件包并解压
tar -xvf oat-all-in-one-x86-411.tar

# 2.    load OAT 包
csocpth:~ # cd oat-all-in-one-x86/
csocpth:~/oat-all-in-one-x86 # docker load -i  oat_4.1.1_20230519_x86.tgz
06f6bfff6616: Loading layer [==================================================>]  230.8MB/230.8MB
e1505344677e: Loading layer [==================================================>]  3.072kB/3.072kB
01ede0eada53: Loading layer [==================================================>]  690.2MB/690.2MB
f5323b31fcbe: Loading layer [==================================================>]  8.704kB/8.704kB
07f573d3f476: Loading layer [==================================================>]  229.9MB/229.9MB
d9994e0d00fd: Loading layer [==================================================>]  156.3MB/156.3MB
aaaf3b3d3500: Loading layer [==================================================>]  56.32kB/56.32kB
Loaded image: reg.docker.alibaba-inc.com/oceanbase/oat:4.1.1_20230519_x86
csocpth:~/oat-all-in-one-x86 # docker images
REPOSITORY                                 TAG                  IMAGE ID            CREATED             SIZE
reg.docker.alibaba-inc.com/oceanbase/oat   4.1.1_20230519_x86   7efa444ce0b9        3 weeks ago         1.28GB

# 3.    运行 OAT
csocpth:~/oat-all-in-one-x86 # oat_image=`docker images | grep oat | head -1 | awk '{printf $1":"$2"\n"}'`
csocpth:~/oat-all-in-one-x86 # docker run --name=oat -d -e DEPLOY_MODE=generic -v /home/oat/data_dir:/data -v /home/oat/db_dir:/var/lib/mysql -p 7000:7000 --restart on-failure:5 $oat_image
7ea6e4d2b930445afddb026a794f0e7ca533d41fc5e5f53a63d324159cd16aec

# 察看启动日志,确保无报错信息
docker logs -f oat

# 前台登录 OAT,应用 [ip]:7000 连到前台页面。

确保替换机器及须要替换机器的 OCP 平台的机器的 hostname 都设置了,能够 hostname -i 检查一下。

查看 OCP 组件信息

OCP-3:~/t-oceanbase-antman # docker ps
CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS              PORTS               NAMES
f5a1125aa84a        reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.3-20220906114643   "/usr/bin/supervisor…"   5 months ago        Up 8 weeks                              ocp
65a0722edbea        reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429     "/usr/bin/supervisor…"   5 months ago        Up 5 months                             metadb

# OAT 纳管 meta 有问题,能够批改 meta 的 docker 名字
docker rename META_OB_ZONE_2 metadb

查看 OCP 的 meta 集群信息

OCP-3:~/t-oceanbase-antman # mysql -h111.11.11.112  -P2883 -uroot@sys#obcluster  -p'CqVgg9}Aut' -Doceanbase

# 确认须要替换机器的 ZONE,IDC。OAT 纳管 OCP 机器时机房和地区须要填写统一。MySQL [oceanbase]> select a.svr_ip,a.zone,b.name,b.info from __all_server a,__all_zone b where a.zone=b.zone and b.name in ('idc','region');
+---------------+----------------+--------+------+
| svr_ip        | zone           | name   | info |
+---------------+----------------+--------+------+
| 111.11.11.111 | META_OB_ZONE_1 | idc    | c6   |
| 111.11.11.111 | META_OB_ZONE_1 | region | jn   |
| 111.11.11.112 | META_OB_ZONE_2 | idc    | c6   |
| 111.11.11.112 | META_OB_ZONE_2 | region | jn   |
| 111.11.11.113 | META_OB_ZONE_3 | idc    | c6   |
| 111.11.11.113 | META_OB_ZONE_3 | region | jn   |
+---------------+----------------+--------+------+
6 rows in set (0.00 sec)


# 确认 obconfig_url 设置不是要被替换掉的机器吧,失常有负载平衡的 OCP 设置的都是负载平衡的 IP。SHOW PARAMETERS LIKE 'obconfig_url'

3.2 OAT 纳管 metadb 和 OCP 产品

通过 OAT 将 OCP 机器和要替换的机器纳管

机房和地区信息与集群中的信息匹配。

增加后的机器用处应 OB 产品服务和 OB Server 都有的。

将须要纳管的组件的镜像包传入 OAT 本地

PS:纳管 metadb 须要输出 metadb 的 sys 租户的 root 明码,如果没有的话能够找装置 OCP 时的 antman 目录下有 getpass.sh 的脚本执行下默认明码会输入。

# 复制到 OAT 的本地目录
cp OB2277_OBP320_x86_20220429.tar /home/oat/data_dir/images/
cp ocp333.tar.gz /home/oat/data_dir/images/

先纳管组件,后纳管 OCP 产品,纳管时会有镜像本地扫描,扫描之后就能辨认到方才传的镜像包。

纳管 OCP

3.3 新节点退出

刚纳管的 OCP 产品增加新的机器

等工作跑完,就能够去替换机器上看下,OCP 的 Docker 就起来了,能够通过 8080 去应用该节点登录 OCP 的前台页面了。

csocpth:~ # docker ps
CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS              PORTS                              NAMES
bdd7deede099        reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.3-20220906114643   "/usr/bin/supervisor…"   17 seconds ago      Up 15 seconds                                          ocp

纳管的 meta 库退出新机器

PS:该版本 OAT 的 metadb 组件在增加新机器的时候有报错,文末会有分享解决方法。

查看集群中新的节点曾经加进来了,meta 库的 Docker 也起来了,并且登录集群能够看到 Server 也起来。

csocpth:~ # docker ps
CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS              PORTS                              NAMES
c143f7252956        reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429     "/usr/bin/supervisor…"   4 minutes ago       Up 4 minutes                                           metadb
bdd7deede099        reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.3-20220906114643   "/usr/bin/supervisor…"   11 minutes ago      Up 11 minutes                                          ocp
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 |
+----------------------------+----------------------------+---------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+
| 2023-01-08 12:17:49.336751 | 2023-01-08 12:18:04.683418 | 111.11.11.111 |     2882 |  1 | META_OB_ZONE_1 |       2881 |               1 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1673151479695641 |            0 |              1 |                 0 |
| 2023-01-08 12:17:49.373647 | 2023-01-08 12:18:06.015801 | 111.11.11.112 |     2882 |  2 | META_OB_ZONE_2 |       2881 |               0 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1673151482026856 |            0 |              1 |                 0 |
| 2023-01-08 12:17:49.339787 | 2023-01-08 12:18:06.037221 | 111.11.11.113 |     2882 |  3 | META_OB_ZONE_3 |       2881 |               0 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1673151482049381 |            0 |              1 |                 0 |
| 2023-06-14 15:37:24.042744 | 2023-06-14 15:37:36.893865 | 143.33.33.32  |     2882 |  4 | META_ZONE_4    |       2881 |               0 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1686728254897197 |            0 |              0 |                 0 |
+----------------------------+----------------------------+---------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+

3.4 旧节点剔除

OCP 节点剔除同理。

报错记录及解决

增加新机器到 metadb 组件。

须要去 OAT 的 Docker 里去批改上图的 Python 脚本,批改完后重启下相干组件。

[root@7ea6e4d2b930 oat]# supervisorctl status
airflow_scheduler                RUNNING   pid 266, uptime 1 day, 1:41:52
backend                          RUNNING   pid 267, uptime 1 day, 1:41:52
[root@7ea6e4d2b930 oat]# supervisorctl restart airflow_scheduler
airflow_scheduler: stopped
airflow_scheduler: started
[root@7ea6e4d2b930 oat]# supervisorctl status
airflow_scheduler                RUNNING   pid 23812, uptime 0:00:14
backend                          RUNNING   pid 267, uptime 1 day, 1:42:19

总结

到此,应用 OAT 去替换 OCP 机器的操作就完结了,可能大家看这篇文章感觉还比较简单,然而整个过程来回做了好几遍,充斥我的崎岖和泪水,为了他人当前少踩坑,所以写这篇文章分享。

OCP 软件的 Docker 替换根本没有问题,次要是 metadb 的替换,其实从下面能够看出 OAT 替换 OCP 的时候,新加机器是在 metadb 中新创建了一个 ZONE,而后再把被替换机器下掉,其中还波及新建资源池批改 Locality,减少正本数等操作。其实应用 antman 脚本的话这个步骤就不太一样,他是将新机器退出到须要替换机器的同一个 ZONE 内,而后做同 ZONE 内 UNIT 的迁徙,而后把被替换的机器下线,这个咱们在下篇文章中介绍。

行之所向,莫问远方。

正文完
 0