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

相关推荐
南墙上的石头4 小时前
麒麟 V10 重装人大金仓 V8R6 踩坑实录(含 MySQL 兼容模式)
数据库·mysql
执子手 吹散苍茫茫烟波7 小时前
RC 隔离级别下 MySQL InnoDB 死锁典型案例
数据库·mysql
峥无10 小时前
深入理解MySQL事务与MVCC机制
数据库·mysql
要开心吖ZSH13 小时前
MVCC 进阶:快照读 vs 当前读、幻读与 Next-Key Lock
java·数据库·sql·mysql·mvcc
万亿少女的梦16814 小时前
基于Spring Boot的天空影院电影网站系统设计与实现
java·spring boot·mysql·vue·系统设计
万亿少女的梦16814 小时前
基于Spring Boot的社区管理系统设计与实现
java·spring boot·mysql·vue·系统设计
翔云12345614 小时前
简单概括主库上 Executed_Gtid_Set 是什么时候更新的
数据库·mysql
要开心吖ZSH14 小时前
Java事务与MySQL事务的关系及MVCC通俗解析
java·开发语言·mysql·mvcc
爱喝热水的呀哈喽15 小时前
hypermesh两个网格参数解析
服务器·数据库·mysql
万亿少女的梦16815 小时前
基于Spring Boot的楚雄旅游景区门票售卖系统设计与实现
java·spring boot·mysql·vue·系统设计