如何替换OCP节点(一):使用oat | OceanBase应用实践

前言:

OceanBase Cloud Platform(简称OCP),是 OceanBase数据库的专属企业级数据库管理平台。

在实际生产环境中,OCP的安装通常是第一步,先搭建OCP平台,进而依赖OCP来创建、管理和监控我们的生产集群。但此后,可能由于机房调整或其他需求,可能会出现需要迁移或替换OCP服务器的情况。

这里,通过两篇文章分别介绍两种OCP节点的替换方法,一种是使用oat平台来替换,另一种就是使用antman脚本替换。(注:本文的环境的OCP负载均衡使用的f5,所以新的机器需要先配置f5,其他负载均衡场景同理)

环境背景:

大家如果有接触ob生产环境的经验的话,可以能会了解,前期版本,安装ocp的时候,需要安装ocp软件/metadba/obproxy三个docker包,后期ocp版本将db+proxy集成在了一个docker包里,oat的话只能纳管db+proxy

集成的metadb,分开的情况还需要使用antman脚本来替换。

>本篇文章主要介绍使用oat替换,下面说下我的软件信息

1.ocp软件:ocp-all-in-one:3.3.3-20220906114643

2.metadb+proxy:OB2277_OBP320_x86_20220429

3.oat:4.1.1_20230519_x86

操作过程:

(一)环境检查/准备

  • 检查替换机器环境,包括分盘,创建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连到前台页面,第一次登录初始密码aaAA11__ 输入后设置密码#####

  • 确保替换机器及需要替换机器的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

    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)
    ###确认需要替换机器的zone,idc。oat纳管ocp机器时机房和地域需要填写一致

    SHOW PARAMETERS LIKE 'obconfig_url'
    #####确认obconfig_url设置不是要被替换掉的机器吧,正常有负载均衡的ocp设置的都是负载均衡的ip###

(二)oat纳管metadb和ocp产品

  • 通过oat将ocp机器和要替换的机器纳管

#####机房和地域信息与集群中的信息匹配

######添加后的机器用途应ob产品服务和observer都有的

  • 将需要纳管的组件的镜像包传入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

(三)新节点加入

  • 刚纳管的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 |
+----------------------------+----------------------------+---------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+

(四) 旧节点剔除

####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的迁移,然后把被替换的机器下线,这个咱们在下篇文章中介绍。

行之所向,莫问远方。

相关推荐
OceanBase数据库官方博客21 小时前
OceanBase 中常用的查询语句
sql·oceanbase·分布式数据库·查询语句
OceanBase数据库官方博客4 天前
如何解决JAVA程序通过obloader并发导数导致系统夯住的问题 | OceanBase 运维实践
java·运维·oceanbase·分布式数据库
OceanBase数据库官方博客4 天前
如何配置 Flink CDC 连接 OceanBase 实现数据实时同步
大数据·flink·oceanbase·分布式数据库
OceanBase数据库官方博客4 天前
如何实现主备租户的无缝切换 | OceanBase应用实践
oceanbase·分布式数据库·高可用
靖顺6 天前
【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
oceanbase
一名数据库爱好者6 天前
OceanBase 闪回查询
数据库·oceanbase·dba
OceanBase数据库官方博客6 天前
ODC 如何精确呈现SQL耗时 | OceanBase 开发者工具解析
sql·oceanbase·分布式数据库·开发者·生态工具
一名数据库爱好者7 天前
OceanBase单表恢复(4.2.1.8)
adb·oceanbase
靖顺7 天前
【OceanBase 诊断调优】—— OceanBase 数据库统计信息被禁用,状态为 broken 的原因和解决方法
数据库·oceanbase
OceanBase数据库官方博客10 天前
如何在 Ubuntu 上 部署 OceanBase
ubuntu·oceanbase·分布式数据库·安装部署