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