oceanbase oms工具实时迁移oceanbase至mysql

1 概述

OceanBase 迁移服务(OceanBase Migration Service,OMS)社区版是 OceanBase 提供的一种支持同构或异构数据源与 OceanBase 数据库之间进行数据交互的服务,具备在线迁移存量数据实时同步增量数据的能力。OMS 社区版提供可视化的集中管控平台,您只需要进行简单的配置即可实时迁移数据。OMS 社区版旨在帮助您低风险、低成本、高效率地实现同构或异构数据库向 OceanBase 进行实时数据迁移和数据同步。

官方文档:

复制代码
https://www.oceanbase.com/docs/community-oms-cn-1000000000536698

OMS v4.2.4开始,目标端数据库不支持mysql类型,如下图所示:

因此要将OB迁移至mysql数据库,选择的版本应该<=v4.2.3。

另外,OMS实时迁移OB数据库到其他数据库,是不需要让OB启动binlog service的。

2 环境

  • 一个3节点的oceanbase-ce v4.2.2数据库:

如何部署oceanbase集群可参考OB官方文档或者我的一篇文章:

复制代码
https://blog.csdn.net/nangonghen/article/details/147571509
  • 一个华为云taurusdb数据库:
  • 一个OMS服务:

如何部署OMS服务可以参考OB官方文档:

复制代码
https://www.oceanbase.com/docs/community-oms-cn-1000000000536748

3 测试OMS的迁移任务

浏览器打开OMS服务器的8089端口,初始化密码后直接登录即可。

3.1 创建源端和目标端数据源

3.2 创建实时迁移任务

任务包含迁移表结构、全量数据、增量数据。

任务的概述信息如下:

启动后,可以看见全量数据迁移和增量数据迁移的详细:

持续运行的迁移任务,如下图:

4 小结

OMS工具可以将OB数据库迁移至其他异构数据库,部署和使用都简单。相比OMS,使用阿里云DTS任务迁移OB集群至Mysql,会在任务的预检查阶段报一个租户没有复制权限的错误,需要提工单跳过该检查项,是一个BUG。

5 附录

5.1 快速部署OMS单机版

准备一台 16U32GB的centos 7.9的服务器。

步骤1:安装docker

复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates
yum install docker-ce-cli-20.10.5-3.el7 docker-ce-20.10.5-3.el7 -y

mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{    
      "max-concurrent-downloads": 10,
      "log-driver": "json-file",
      "log-level": "warn",
      "log-opts": {
          "max-size": "100m",
          "max-file": "3"
      },
      "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

systemctl daemon-reload
systemctl enable docker.service
systemctl restart docker

步骤2:下载OMS容器镜像并透出脚本文件

复制代码
wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oms/4.2.2-CE/oms_4.2.2-ce.tar.gz
docker load -i oms_4.2.2-ce.tar.gz

docker run -d --net host --name oms-config-tool reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.2_ce bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool
ls docker_remote_deploy.sh

步骤3:源端OB集群中创建一个租户,作为OMS服务的元数据库:

复制代码
CREATE RESOURCE UNIT S1_unit_config
                MEMORY_SIZE = '4G',
                MAX_CPU = 2, MIN_CPU = 2,
                LOG_DISK_SIZE = '6G',
                MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;

CREATE RESOURCE POOL oms_pool_01
                UNIT='S1_unit_config',
                UNIT_NUM=1,
                ZONE_LIST=('zone1');

CREATE TENANT IF NOT EXISTS oms_01
                PRIMARY_ZONE='zone1',
                RESOURCE_POOL_LIST=('oms_pool_01')
                set OB_TCP_INVITED_NODES='%';

步骤4:为待迁移的OB租户开启归档日志(OMS增量迁移任务情景下会检查)

以租户test_t1为例子,在obproxy中登录root@sys,执行以下2条SQL即可:

复制代码
obclient [oceanbase]>  ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:////opt/myoceanbase/oceanbase/log/archive/test_t1' TENANT = test_t1;
Query OK, 0 rows affected (0.022 sec)
obclient [oceanbase]> ALTER SYSTEM ARCHIVELOG TENANT = test_t1;

步骤5:通过脚本docker_remote_deploy.sh部署OMS容器

OMS容器是一个富容器,里面包括多个进程,部署命令如下:

复制代码
export IP=<你的当前服务器IP>
./docker_remote_deploy.sh -i $IP -d reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.2_ce

接着进入命令行交互流程,依据提示输入信息即可。

最后,浏览器输入服务器的8089端口即可访问OMS服务。

相关推荐
KING BOB!!!10 小时前
Leetcode高频 SQL 50 题(基础版)题目记录
sql·mysql·算法·leetcode
NineData13 小时前
NineData发布 Oracle 到 MySQL 双向实时复制,助力去 O 战略与数据回流
mysql·阿里云·oracle·ninedata·数据库迁移·数据复制·双向复制
皆过客,揽星河15 小时前
mysql初学者练习题(从基础到进阶,相关数据sql脚本在最后)
数据库·sql·mysql·oracle·mysql基础练习·mysql基础语法·数据库练习题
AI小小怪16 小时前
在linux下使用MySQL常用的命令集合
linux·数据库·mysql·oracle
XYiFfang19 小时前
【mysql】SQL自连接实战:查询温度升高的日期
数据库·sql·mysql
四季豆豆豆1 天前
办公任务分发项目 laravel vue mysql 第一章:核心功能构建 API
vue.js·mysql·laravel
一个CCD1 天前
MySQL主从复制之进阶延时同步、GTID复制、半同步复制完整实验流程
android·mysql·adb
R瑾安1 天前
mysql集群部署(Mysql Group Replication)
数据库·mysql·wpf
没刮胡子1 天前
mysql分页SQL
数据库·sql·mysql
高级测试工程师欧阳1 天前
SQLint3 模块如何使用
数据库·python·mysql·oracle