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 | 内存 | 磁盘 | |
---|---|---|---|
基础服务 | 1C | 1G | 100G |
管控组件 | 4C | 7G | 100G |
Store | 4C | 8G | 取决于数据库端日志生成速度和OMS中增量数据的保存时间 |
Incr-Sync | 2C | 8G | 5G |
Full-Import | 2C | 4G | 5G |
总计 | 13C | 28G | >210G |
数据库到大数据的同步场景下,各组件部署所需要的资源:
CPU | 内存 | 磁盘 | |
---|---|---|---|
基础服务 | 1C | 1G | 100G |
管控组件 | 4C | 7G | 100G |
Store | 4C | 8G | 取决于数据库端日志生成速度和OMS中增量数据的保存时间 |
Incr-Sync | 2C | 4G | 5G |
Full-Import | 2C | 4G | 5G |
总计 | 13C | 24G | >210G |
单节点部署
⭐️ OMS下载地址:https://www.oceanbase.com/softwarecenter
⭐️ 迁移同步工具 => OceanBase迁移服务 V4.2.9_CE
-
部署存储OMS元数据的数据库(MySQL或OceanBase)。
-
加载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
。
- (可选)部署时序数据库。
如果需要能够收集和展示监控数据库,可以部署时序数据库InfluxDB。目前时序数据库仅支持单节点部署,不具备高可用能力,可以将时序数据库和OMS社区版混合部署在同一台宿主机上。
📖 部署InfluxDB参考:https://www.oceanbase.com/docs/community-oms-cn-1000000002947306
- 从加载的镜像中获取部署脚本
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
- 准备配置文件。
配置文件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
- 通过部署脚本启动部署工具。
bash docker_remote_deploy.sh -o <OMS容器挂载目录> -c <config.yaml配置文件地址> -i <本机IP地址> -d <OMS_IMAGE>
如果部署失败,可以登录至运行的OMS容器中,查看/home/admin/logs
目录下以docker_init
为前缀的.log
文件,获取日志信息。如果OMS容器未成功启动,则无法获取日志。
- 部署完成后,登录Web页面,设置admin和root初次登录密码。
OMS社区版控制台的访问地址:部署OMS社区版的宿主机的IP地址:8089
。
检查OMS状态:
supervisorctl status
如果nginx、oms_console、oms_drc_cm、oms_drc_supervisor、sshd服务都处于RUNNING状态即为正常。
📖部署完成后,如果需要修改配置,请进行以下操作:
- 登录至运行的OMS社区版容器。
- 根据业务需求,修改
/home/admin/conf/config.yaml
文件。- 执行命令
python -m omsflow.scripts.units.oms_init_manager --init-config-file
。- 执行命令
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