使用 OAT 工具替换 OceanBase 云平台节点
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 的迁移,然后把被替换的机器下线,这个咱们在下篇文章中介绍。
行之所向,莫问远方。
关于 SQLE
爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。
SQLE 获取

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
券商数字化创新场景数据中台实践
时下,众多金融机构在积极推行数字化改革,以适应时代高速革新。为回应市场对信息即时生效的迫切需求,各家券商机构都需要更具竞争力的信息服务。 本次方案结合券商场景与业务实践,围绕客户实际面临的业务和数据问题,输出整体建设方案,方案包括业务背景、业务痛点、以及相关解决方案和实际案例。 以上内容节选自案例集,点击链接下载完整案例集:https://www.dtstack.com/resources/1048 01 券商数据业务化面临的挑战 2014年被称为券商互联网化的元年,当时有券商选择和互联网平台合作,有的则自建平台。发展到现在,证券服务与人工智能、大数据、区块链、云计算等技术结合,推动证券行业真正开始数字化转型,行业的金融服务生态也被重构。但面对数字化转型这一课题,券商还面临诸多挑战: 数据共享难,数据创新成本高 部门间数据孤岛,缺乏企业统一数据出口,数据消费方式获取数据困难,难以发挥全域数据价值。 平台架构复杂,运维成本高 大数据开源组件众多+更新迭代快,安装部署维护使用的技术门槛高,数据开发效率低,资源利用率不高,存在浪费。 启动成本高,建设周期长 投资高、周期长:建设到投产以月为度...
- 下一篇
保险业务连续性保障:从测试到生产,混沌平台建设节奏如何把控?
一分钟精华速览 中国信通院最新的调查报告显示,越来越多企业正在尝试通过混沌工程来提高系统稳定性。实验的不同阶段,大家面临着不同的问题,我们尝试从混沌工程推进的不同角度,为大家提供一些解题思路。 「TakinTalks 论道系列」第 4 期,我们邀请了 4 位正在进行相关实践、研究的从业人员,从不同视角分享对混沌工程的看法,在他们的经验中了解混沌工程如何推进、如何落地、如何避坑…… 微信公众号后台回复 “交流” 进入读者交流群。回复“报告”获取最新混沌工程研究报告。 主持人:中国信通院最近公布了两个调研结果:从 2021 年到 2022 年,许多企业尝试进行混沌工程;大部分企业仍然只在测试环境中进行混沌工程,或者在预生产环境中进行。我们想了解下,大家作为正在落地相关实验的企业,在实践中认为有哪些值得特别关注的点?(数据来自:《中国混沌工程调查报告(2022)》) **中国人寿-刘玢 :**我想分享一下中国人寿在混沌工程落地时遇到的关键点和避坑点。在测试和开发环境中,我们关注的是故障模拟能力。包括基础故障、中间件故障和应用故障等,因为应用故障很难复现,我们通过组合故障来模拟和复现故障。而在...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启