OceanBase数据库迁移工具介绍和部署

  • 核心组件
  • 迁移支持
  • 部署要求
  • 单节点部署
  • 查看日志

OceanBase 迁移服务(OceanBase Migration Service, OMS)是OceanBase数据库提供的一种支持同构或异构数据源与OceanBase数据库之间进行数据交互的服务,具备在线迁移存量数据和实时同步增量数据的能力。

核心组件

OMS社区版内部主要包含:

  • 管理控制台:进行一站式迁移调度。
  • DBCat:数据对象采集和转换组件。
  • 增量拉取组件Store、增量同步组件Incr-Sync、全量导入组件Full-Import和全量校验组件Full-Verification
  • 基础服务组件:集群管理、资源池管理、高可用组件和元数据管理等多个组件,以保证迁移模块的高效调度和稳定运行。

OMS社区版核心组件如下:

分类名词解释
管控组件- Ghana:OMS社区版控制台。
- CM:OMS社区版的集群管理服务。
- Supervisor:OMS社区版的代理服务,负责接收集群管理服务下发的指令并执行。
增量解析组件- Store:用于对数据库事务日志进行拉取解析,并对解析后的日志记录按统一格式存储。下游可以从Store中以一致的方式消费增量数据,无需关心不同数据库间日志格式差异。
- LogProxy:OceanBase数据库日志代理。
框架组件- Incr-Sync:增量同步组件:从增量拉取组件中请求增量数据,并根据用户配置的同步对象进行数据过滤,然后在保证事务时序性及事务一致性的前提下,将日志记录同步至目标实例。
- Full-Import:全量导入组件:负责源库表对象中存量数据的迁移和部分增量数据的同步。
- Full-Verification:全量校验组件:负责迁移表中的行记录进行全字段校验,并针对不一致的数据生成订正语句。
其它- MetaDB:基于容器部署的OceanBase数据库服务,并内置了OceanBase数据库代理,便于外部直接访问。MetaDB可以用于OCP、ODC和OMS等产品的元数据存储。
- InfluxDB:基于容器部署的时间序列数据库服务,用于存储OMS社区版的数据居传输项目的监控数据。

迁移支持

OMS社区版V4.2.9支持从以下异构数据库迁移到OceanBase:

  • MySQL:V5.5、V5.6、V5.7、V8.0
  • MariaDB:V10.2
  • TiDB:V2.x、V3.x、V4.x、V5.x、V6.x、V7.x、V8.x
  • PostgreSQL:V10.x、V11.x、V12.x、V13.x、V14.x、V15.x、V16.x
  • GreenPlum:V4、V5.1
  • HBase:V1.2.0-cdh5.15.2、社区版 V2.x
  • Redis:V2.8.0 及之后版本
  • Hive:V2.1.1、V3.1.3

OMS社区版V4.2.9支持到以下消息组件的数据同步:

  • Kafka V0.9、V1.0、V2.x
  • RocketMQ V4.7.1

部署要求

OMS部署前提:

  • 需要安装docker环境,版本不低于V1.13
  • 需要安装一个存储OMS元数据的数据库(MySQL或OceanBase),服务器配置为2C4G即可。
  • 如果需要收集和展示OMS历史监控数据,还需要部署InfluxDB时序数据库。

数据库到数据库的同步场景下,各组件部署所需要的资源:

CPU内存磁盘
基础服务1C1G100G
管控组件4C7G100G
Store4C8G取决于数据库端日志生成速度和OMS中增量数据的保存时间
Incr-Sync2C8G5G
Full-Import2C4G5G
总计13C28G>210G

数据库到大数据的同步场景下,各组件部署所需要的资源:

CPU内存磁盘
基础服务1C1G100G
管控组件4C7G100G
Store4C8G取决于数据库端日志生成速度和OMS中增量数据的保存时间
Incr-Sync2C4G5G
Full-Import2C4G5G
总计13C24G>210G

单节点部署

⭐️ OMS下载地址:https://www.oceanbase.com/softwarecenter
⭐️ 迁移同步工具 => OceanBase迁移服务 V4.2.9_CE

  1. 部署存储OMS元数据的数据库(MySQL或OceanBase)。

  2. 加载OMS镜像文件到docker环境:

sudo docker load -i oms_4.2.9-ce.tar.gz

加载完成后,检查镜像唯一标识符:

$ sudo docker images
REPOSITORY                                   TAG                 IMAGE ID          
work.oceanbase-dev.com/obartifact-store/oms  feature_4.0.0-ce    2786e8a6eccd        

这里<OMS_IMAGE>可以是2786e8a6eccd或者work.oceanbase-dev.com/obartifact-store/oms:feature_4.0.0-ce

  1. (可选)部署时序数据库。

如果需要能够收集和展示监控数据库,可以部署时序数据库InfluxDB。目前时序数据库仅支持单节点部署,不具备高可用能力,可以将时序数据库和OMS社区版混合部署在同一台宿主机上。

📖 部署InfluxDB参考:https://www.oceanbase.com/docs/community-oms-cn-1000000002947306

  1. 从加载的镜像中获取部署脚本docker_remote_deploy.sh
sudo docker run -d --net host --name oms-config-tool <OMS_IMAGE> bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool# 替换<OMS_IMAGE>为镜像唯一标识符
sudo docker run -d --net host --name oms-config-tool work.oceanbase-dev.com/obartifact-store/oms:feature_4.0.0-ce bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool
  1. 准备配置文件。

配置文件config.yaml格式如下。

# OMS社区版元数据库信息(MySQL或OceanBase)
oms_meta_host: ${oms_meta_host}
oms_meta_port: ${oms_meta_port}
oms_meta_user: ${oms_meta_user}
oms_meta_password: ${oms_meta_password}# 用户可以自定义以下三个数据库的名称,OMS 社区版部署时会在元信息库中创建出这三个数据库
drc_rm_db: ${drc_rm_db}
drc_cm_db: ${drc_cm_db}
drc_cm_heartbeat_db: ${drc_cm_heartbeat_db}# OMS 社区版配置
# 单节点部署时,通常配置为当前OMS社区版机器IP(建议使用内网 IP)
cm_url: ${cm_url}
cm_location: ${cm_location}# 单节点部署时,无需设置 cm_region
# cm_region: ${cm_region}
# 单节点部署时,无需设置 cm_region_cn
# cm_region_cn: ${cm_region_cn}
cm_is_default: true
cm_nodes:- ${cm_nodes}# 时序数据库配置
# 默认值为 false。如果您需要开启指标汇报功能,请设置为 true
# tsdb_enabled: false 
# 当 tsdb_enabled 为 true 时,请取消下述参数的注释并根据实际情况填写
# tsdb_service: 'INFLUXDB'
# tsdb_url: '${tsdb_url}'
# tsdb_username: ${tsdb_user}
# tsdb_password: ${tsdb_password}# 用户自定义组件端口号
# 指定 GHANA 服务的端口号
ghana_server_port: xxxxx# 指定 Nginx 服务的端口号
nginx_server_port: xxxxx# 指定 CM 服务的端口号
cm_server_port: xxxxx# 指定 Supervisor 服务的端口号
supervisor_server_port: xxxxx# 指定 sshd 服务的端口号
sshd_server_port: xxxxx

示例如下:

oms_meta_host: xxx.xxx.xxx.1
oms_meta_port: 2883
oms_meta_user: oms_meta_user
oms_meta_password: ********
drc_rm_db: oms_rm
drc_cm_db: oms_cm
drc_cm_heartbeat_db: oms_cm_heartbeat
cm_url: http://xxx.xxx.xxx.2:8088
cm_location: 100
cm_region: cn-beijing
cm_region_cn: 北京
cm_is_default: true
cm_nodes:- xxx.xxx.xxx.2
tsdb_service: 'INFLUXDB'
tsdb_enabled: true
tsdb_url: 'xxx.xxx.xxx.4:8086'
tsdb_username: username
tsdb_password: *******
ghana_server_port: xxxxx
nginx_server_port: xxxxx
cm_server_port: xxxxx
supervisor_server_port: xxxxx
sshd_server_port: xxxxx
  1. 通过部署脚本启动部署工具。
bash docker_remote_deploy.sh -o <OMS容器挂载目录> -c <config.yaml配置文件地址> -i <本机IP地址> -d <OMS_IMAGE>

如果部署失败,可以登录至运行的OMS容器中,查看/home/admin/logs目录下以docker_init为前缀的.log文件,获取日志信息。如果OMS容器未成功启动,则无法获取日志。

  1. 部署完成后,登录Web页面,设置admin和root初次登录密码。

OMS社区版控制台的访问地址:部署OMS社区版的宿主机的IP地址:8089

检查OMS状态:

supervisorctl status

如果nginx、oms_console、oms_drc_cm、oms_drc_supervisor、sshd服务都处于RUNNING状态即为正常。

📖部署完成后,如果需要修改配置,请进行以下操作:

  1. 登录至运行的OMS社区版容器。
  2. 根据业务需求,修改/home/admin/conf/config.yaml文件。
  3. 执行命令python -m omsflow.scripts.units.oms_init_manager --init-config-file
  4. 执行命令supervisorctl restart oms_console oms_drc_supervisor

查看日志

  • Console组件日志的默认目录为/home/admin/logs/ghana/Ghana
  • CM组件日志的默认目录为/home/admin/logs/cm/log
  • Store组件日志的默认目录为/home/ds/store/store{storeport}/log。也可以在OMS社区版控制台查看Store组件日志。
  • Full-Import/Incr-Sync组件日志的默认目录为/home/ds/run/{组件ID}/logs。也可以在OMS社区版控制台查看Full-Import/Incr-Sync组件日志。
  • Full-Verification组件日志的目录为/home/ds/run/{name}/logs。也可以在OMS社区版控制台查看Full-Verification组件日志。
  • Supervisor组件日志:根据/home/ds/supervisor/config/drc.properties文件中logging.path项找到Supervisor组件日志所在位置。

References
【1】https://www.oceanbase.com/docs/community-oms-cn-1000000002947331

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈与队列:算法基础的核心差异

理解栈和队列的异同对打好算法基础太重要了&#xff01;它们都是编程和算法中无处不在的线性数据结构&#xff0c;核心区别在于操作数据的顺序。下面我来帮大家清晰梳理它们的异同点&#xff1a;一、相同点都是线性数据结构&#xff1a;数据元素之间逻辑上呈现“一个接一个”的…

HCIA-生成数协议(STP)

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 ​ 本篇笔记是根据B站上的视频教程整理而成&#xff0c;感谢UP主的精彩讲解&#xff01;如果需要了解更多细节&#xff0c;可以参考以下视频&#xf…

基于内网穿透技术的Stable+Diffusion+3.5本地化部署与远程图像生成架构

文章目录 前言1. 本地部署ComfyUI2. 下载 Stable Diffusion3.5 模型3. 演示文生图4. 公网使用Stable Diffusion 3.5 大模型4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 在数字内容创作行业中&#xff0c;利用本地化服务器进行人工智能部署的策略正逐步成为优化制作…

私有云平台实战-OpenStack入门体验

目录 #1.1云计算概述 1.1.1什么是云计算 1.1.2云计算的服务模型 1.1.3OpenStack概述 #2.1OpenStack一键部署 2.1.1在线安装 2.1.2使用本地仓库离线安装 2.1.3创建云主机 1.1云计算概述 云计算是一种基于互联网的计算方式&#xff0c;通过网络将共享的软硬件资源和信息按需提供…

专题:2025即时零售与各类人群消费行为洞察报告|附400+份报告PDF、原数据表汇总下载

原文链接&#xff1a;https://tecdat.cn/?p42808 即时零售的崛起正在重塑消费市场的时间与空间边界。从清晨的第一杯咖啡到深夜的应急零食&#xff0c;消费者的需求不再受限于传统营业时间。与此同时&#xff0c;不同人群的消费习惯呈现出鲜明差异&#xff0c;Z世代沉迷线上娱…

【一起来学AI大模型】算法核心:数组/哈希表/树/排序/动态规划(LeetCode精练)

以下是五大核心算法的重点解析和LeetCode经典题解&#xff0c;包含最优解法和模板代码&#xff1a;一、数组操作&#xff08;双指针/滑动窗口&#xff09;核心思想&#xff1a;通过索引指针高效遍历与操作数组1. 移动零&#xff08;No.283&#xff09;def moveZeroes(nums):slo…

CSS之基础语法一文全解析

CSS之基础语法一文全解析 一、CSS语法核心结构&#xff1a;选择器声明块1.1 基础语法模板1.2 关键组成部分 二、选择器全解析&#xff1a;精准定位目标元素2.1 基础选择器&#xff08;必掌握&#xff09;2.1.1 标签选择器&#xff08;类型选择器&#xff09;2.1.2 类选择器&…

vue 前端动态导入文件 import.meta.glob 导入图片

背景&#xff1a; 在开发过程中&#xff0c;前端会引入资源文件&#xff0c;这里主要是引入图片。在开发环境&#xff0c;导入的图片显示正常&#xff0c;但是打包部署后&#xff0c;导入的图片就不能正常显示。 原因分析&#xff0c;可能有如下几点&#xff1a; 1.图片不能显示…

RocketMQ-Dashboard页面报Failed to fetch ops home page data错误

今天安装RocketMQ-Dashboard&#xff0c;访问主页&#xff0c;页面弹框提示Failed to fetch ops home page data&#xff0c;F12发现控制台输出网络请求跨域。解决&#xff1a;不要用127.0.0.1访问&#xff0c;用localhost就不报错了

0704-0706上海,又聚上了

上次&#xff0c;还是0413&#xff0c;当时写了一篇&#xff0c;下次相见是何时&#xff1f;也鼓励自己下次相见是找到工作&#xff08;实习也算&#xff09;&#xff0c;没想到真找到了&#xff0c;DW App 说到实习&#xff0c;其实没认真投递很多&#xff0c;互联网公司除了阿…

【win电脑-程序CMD自启动问题-开机就自启动-查找原因-解决方式】

【win电脑-程序CMD自启动问题-开机就自启动-查找原因-解决方式】 1&#xff0c;情况说明&#xff1a;2&#xff0c;问题描述1-这是什么窗口 2-原因分析&#xff1a;3-我的努力-尝试解决&#xff1a;1&#xff0c;任务管理器中查看状态2&#xff0c;查看启动文件夹3&#xff0c;…

Go语言实现双Token登录的思路与实现

Go语言实现双Token登录的思路与实现 引言 在现代Web应用中&#xff0c;身份认证是保障系统安全的重要环节。传统的单Token认证方式存在一些安全隐患&#xff0c;如Token泄露可能导致长期风险。双Token机制&#xff08;Access Token Refresh Token&#xff09;提供了更好的安全…

映射阿里云OSS(对象存储服务)

参考&#xff1a;使用阿里云进行OSS对象存储&#xff08;超详细&#xff09; 一文掌握SpringBoot注解之Component 知识文集(1) ConfigurationProperties注解原理与实战 1.配置属性类 AliOssProperties package com.sky.properties;import lombok.Data; import org.springframe…

Java操作word实战

文章目录简介段落页头与页脚页码表格图片批注文本框目录图表简介 Word编程最重要的类是org.apache.poi.xwpf.usermodel.XWPFDocument。涉及的东西十分复杂。而且Apache poi操作word的技术非常不成熟。代码中本身有很多bug。   Maven的依赖为 <dependency><groupId&…

【Flask】flask中get方法和post方法区别

对于post和get在我以前的认知下一直认为是&#xff1a; 前端发送给后端就称为post 前端需要从后端返回就用get 但是在开发过程中发现了不仅仅如此 区别 GET 意图&#xff1a;获取&#xff08;GET&#xff09; 信息。你只是想读取服务器上已经存在的资源&#xff0c;你不打算改变…

Linux sudo升级

应对 Linux sudo 本地提权漏洞&#xff1a;离线升级 Sudo 到安全版本 一、引言 在 Linux 系统中&#xff0c;sudo&#xff08;superuser do&#xff09;是一个非常重要的工具&#xff0c;它允许授权用户以超级用户&#xff08;root&#xff09;的权限执行命令。然而&#xff0c…

ubuntu 6.8.0 安装xenomai3.3

通过以下步骤来获取和准备 Linux 内核 6.8.0 的源码&#xff0c;并应用 Xenomai 补丁&#xff1a; 1. 下载 Linux 内核 6.8.0 源码 你可以从 The Linux Kernel Archives 下载 Linux 内核 6.8.0 的源码。以下是具体步骤&#xff1a; 访问内核官方网站&#xff1a; 打开 The Li…

drawRect 触发时机

在 iOS 开发中&#xff0c;UIView 的 drawRect: 方法&#xff08;或其底层 CALayer 的绘制&#xff09;的触发时机是由系统控制的&#xff0c;开发者不能直接调用这些方法。以下是触发视图绘制的完整机制&#xff1a;一、核心触发时机 1. 视图首次显示 当视图被添加到视图层级时…

1.1_4 计算机网络的分类

在这个视频中我们会探讨计算机网络的分类&#xff0c;从不同的角度可以对计算机网络进行不同的分类&#xff0c;我们会从分布范围、传输技术、拓扑结构、使用者和传输介质这样的几个维度进行讨论&#xff0c;在这门课当中需要注意的是标红色的几个分类&#xff0c;其他的类别简…

03每日简报20250705

每日简报 新闻简报&#xff1a;AI行业信任危机浮现 标题&#xff1a;知名科技作者Alberto Romero发文《我对AI行业正在失去所有信任》 来源&#xff1a;The Algorithmic Bridge&#xff08;算法之桥&#xff09; 核心内容&#xff1a; 作者立场&#xff1a;长期支持AI技术…