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服务。

相关推荐
Flynt3 小时前
"MySQL搜不动就上ES"?我先在50万行数据上测了它自带的ngram全文索引
mysql·elasticsearch·搜索引擎
imDwAaY3 小时前
Redo Log 和 Binlog 为什么需要两阶段提交?
后端·mysql
灰原喜欢柯南3 小时前
OceanBase 运维管理知识点——OCP 监控、诊断与变更控制
数据库·oceanbase
数据库小学妹4 小时前
MySQL深分页优化:LIMIT大偏移的根因分析与五种解法对比
数据库·mysql·性能优化
这个DBA有点耶4 小时前
从异步复制到MGR:MySQL复制机制的三层演进与选型框架
数据库·mysql·代码规范
小白男神4 小时前
MySQL进阶学习六(InnoDB存储引擎)
后端·mysql
小白男神4 小时前
MySQL进阶学习五(锁)
后端·mysql
devpotato4 小时前
把 MySQL 索引讲透:从 B+ 树结构到线上索引治理
java·mysql
小白男神6 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶6 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构