使用 OAT 工具替换 OceanBase 云平台节点

news2024/11/25 14:31:25

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 脚本来替换。

软件信息

软件版本
OCPocp-all-in-one:3.3.3-20220906114643
metadb+proxyOB2277_OBP320_x86_20220429
OAT4.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 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android:DataPicker控件使用

一、前言:我真的服了,刚开始再发布运行的时候一直报这个错误“ Attempt to invoke virtual method void android.widget.TextView.setText(java.lang.CharSequence) on a null object reference”说空指针。我也上网查了,网上说在这个错误不是…

mysql行数据转为列数据

最近在开发过程中遇到问题,需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示。 借此机会,在网上查阅了相关方法,现总结出一种比较简单易懂的方法备用…

BI商业智能工具改变企业发展态势

BI商业智能工具在当今企业环境中扮演着越来越重要的角色,成为企业实现高速增长的关键因素之一。这些工具能够帮助企业应对海量数据挑战,提供更高效的数据处理和分析能力,为企业决策提供有力支持。以瓴羊Quick BI为例,它凭借其强大…

记事本软件误删后如何找回?

随着智能手机的普及,各种优秀的手机软件层出不穷,成为我们生活和工作中的得力助手。其中,记事本软件在手机上的应用也越来越受欢迎。 一款记事本可以给用户带来许多便利和帮助。与传统的纸质记事本相比,手机记事本具有更多的功能…

Java Spring多线程

Java Spring多线程 开启一个线程1 继承java.lang.Thread类2 实现java.lang.Runnable接口3 实现Callable接口4 实现线程池ThreadPoolExecutor Java线程池Executors 的类型Future与线程池 开启一个线程 https://blog.csdn.net/qq_44715943/article/details/116714584 1 继承java.…

React hooks文档笔记(二) 添加交互性

添加交互性 1. 事件传播1.1 停止传播1.2 阻止默认事件 2. [Hook] useState 状态3. 渲染和提交3.1 触发渲染3.2 React渲染组件3.3 提交对 DOM 的更改3.4 浏览器绘制 4. 渲染快照状态队列例子 5. 更新state中的对象 1. 事件传播 js的事件流: 事件捕获:从…

Spring学习(二)(Spring创建和使用)

经过前⾯的学习我们已经知道了,Spring 就是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么 它就具备两个最基本的功能: 将对象(Bean)存储到容器(Spring)中; 从容器中将对象取出来。那么该怎么将Bean存储的Spring以…

单片机系统架构

单片机系统架构 单片机概述 微型计算机的组成 微处理器、存储器加上I/O接口电路组成微型计算机。各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。 微型计算机的应用形态 ​ 从应用形态上&am…

python数据可视化-日期折线图画法

引入 什么是折线图: 折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。 在折线图中,类别数…

【vue】- 简易版筛选组件可展开/收起

仅做记录&#xff0c;未整理格式 css部分未完全&#xff0c;每个筛选条件为固定宽度 实现效果 单行筛选条件时不触发更多按钮&#xff0c;且做占位处理 多行筛选条件时默认收起 同时设定最大/最小宽度并监听该组件宽度变化 filter.vue组件 <template><div :cla…

c#调用c++ dll,Release版本内存访问错误

最近遇到个比较经典的案例&#xff0c;在c#中调用yara进行文件检测&#xff0c;yara是c编写的一个非常强大库&#xff0c;github有个大佬用c#对其进行了封装&#xff0c;使其能在跨平台下&#xff0c;只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃&…

Hadoop 组成

4 Hadoop 优势(4 高) 1)高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。 2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。 3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务…

低代码平台在ERP软件中的作用

很多人认为 低代码开发平台的出现颠覆了传统的软件开发模式&#xff0c;对软件开发行业造成冲击&#xff0c;其实低代码开发平台的出现只是提高了软件开发的效率&#xff0c;并不是要颠覆软件开发的模式。低代码平台在erp软件开发中的作用还是比较明显的。下面一起来了解一下相…

Postman Mock快速入门

目录 前言&#xff1a; 1.Mock简介 1.1 Mock定义 1.2 Mock目的 1.3 Mock意义 1.4 Mock服务 2. Postman 创建Mock服务 2.1 创建Mock服务 2.2 Postman创建Mock服务 2.2.1 Postman 创建Mock服务器参数 2.2.2 Postman创建Mock步骤 3.访问Postman Mock服务 前言&#xf…

css基础知识十三:怎么理解回流跟重绘?什么场景下会触发?

一、是什么 在HTML中&#xff0c;每个元素都可以理解成一个盒子&#xff0c;在浏览器解析过程中&#xff0c;会涉及到回流与重绘&#xff1a; 回流&#xff1a;布局引擎会根据各种样式计算每个盒子在页面上的大小与位置重绘&#xff1a;当计算好盒模型的位置、大小及其他属性…

MySQL-SQL全部锁详解(下)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

老PM,到底在牛什么?

早上好&#xff0c;我是老原。 “成长为一名优秀的项目经理。”相信这是每一个刚入行的项目经理都会立的flag。 对于项目经理来说&#xff0c;这是一个能力和经验并重的岗位&#xff0c;你应该也经常听人说&#xff0c;这项目经理是一个越老越吃香的职业。 就拿我自己来说&a…

【java】HashMap扩容机制详解

文章目录 JDK1.7下的扩容机制JDK1.8下的扩容机制 JDK1.7下的扩容机制 JDK1.7下的resize()方法是这样的&#xff1a; void resize(int newCapacity) { Entry[] oldTable table; int oldCapacity oldTable.length; if (oldCapacity MAXIMUM_CAPACITY) { threshold Integer.…

零样本视频生成无压力,基于飞桨框架实现Text2Video-Zero核心代码及依赖库

项目背景 继 AI 绘画之后&#xff0c;短视频行业正迎来 AI 智能创作的新浪潮。AI 智能创作正在各个方面为创作者和用户带来新的体验和价值。AI 动漫视频、AI 瞬息宇宙、AI 视频风格化等诸多创作功能不仅为视频内容创作提供了全新灵感&#xff0c;而且大大降低了用户创作的门槛…

SpringMVC原理分析 | 数据处理:ModelAndView

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 重定向和转发 ModelAndView 设置ModelAndView对象&#xff0c;根据view的名称、视图解析器跳转到指定的页面 页面&#xff1a;{视图解析器前缀} viewName {视图解析器…