首批通过分布式安全可靠测评,为关键业务系统打造
单节点部署
更新时间:2023-12-11 16:50:36
本文为您介绍如何在单节点中安装 OceanBase 迁移服务(OceanBase Migration Service,OMS)。
前提条件
确认安装环境符合系统要求,详情请参见 系统要求。
已准备 MetaDB 集群作为 OMS 的元信息库。
已获取 OMS 安装包,通常安装包为以 oms 开头的
tar.gz文件。
操作步骤
登录 OMS 部署机。
(可选)部署时序数据库。
如果您需要 OMS 能够收集和展示监控数据,请部署时序数据库。如果无需展示监控数据,请跳过本步骤。操作详情请参见 部署时序数据库。
准备配置文件。
在适当的目录下编辑 OMS 启动配置文件。例如,您可以将配置文件创建为
/root/config.yaml。请注意将必填参数替换为您部署的目标环境的实际值。本文已将可选参数进行注释,您可以根据实际情况选择性修改。
注意:
config.yaml文件中的 Key: Value,冒号后面必须加一个空格。config.yaml配置文件模板如下:# OMS 元数据库信息 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} # 用于消费 OceanBase 增量的用户 # 当需要从 OceanBase 数据库消费增量日志时,请在 sys 租户下创建用户 # drc user 需要在待迁移的 OceanBase 集群 sys 租户下创建,然后在 OMS 的 config.yaml 文件中指定 drc_user: ${drc_user} drc_password: '${drc_password}' # 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}参数 描述 是否必选 oms_meta_host 元信息库的 IP 地址,可以是 MySQL 或 OceanBase 数据库 MySQL 租户。
注意:
OceanBase 数据库需要是 2.0 及以上版本。必选 oms_meta_port 元信息库的端口号。 必选 oms_meta_user 元信息库的用户名称。 必选 oms_meta_password 元信息库的用户密码。 必选 drc_rm_db 管理控制台的数据库名称。 必选 drc_cm_db 集群管理服务的元数据库名称。 必选 drc_cm_heartbeat_db 集群管理服务的心跳库的名称。 必选 drc_user 用于读取 OceanBase 数据库增量日志的账号名称,需要在 sys 租户下创建该用户。详情请参见 OMS 用户指南中的《用户权限说明》。 必选 drc_password drc_user账号对应的密码。必选 cm_url OMS 集群管理服务的地址。例如, http://xxx.xxx.xxx.1:8088。
说明:单节点部署时,通常配置为当前 OMS 机器 IP。不建议您使用 http://127.0.0.1:8088。必选 cm_location 地域码,取值范围为 [0,127]。每个地域一个数字,用户自行选择。 必选 cm_region 地域,例如 cn-jiangsu。
注意:
如果是和阿里云 MSHA 产品在容灾双活场景下使用,请使用阿里云的 Region 信息作为cm_region。可选 cm_region_cn 地域的中文标识。例如,江苏。 可选 cm_nodes OMS 集群管理服务的机器 IP 列表。 必选 cm_is_default 标识是否默认 OMS 集群管理服务。 可选,默认值为 truetsdb_enabled 表示是否开启指标汇报的功能(监控能力),包括 true或false。可选,默认值为 falsetsdb_service 表示时序数据库的类型,包括 INFLUXDB和CERESDB。可选,默认值为 CERESDBtsdb_url 部署 InfluxDB 的机器地址。当 tsdb_enabled为true时,请根据实际环境修改该参数。可选 tsdb_username 时序数据库的用户名。当 tsdb_enabled为true时,请根据实际环境修改该参数。 部署时序数据库后,需要您手动创建时序数据库用户,并填写用户名和密码。可选 tsdb_password 时序数据库的密码。当 tsdb_enabled为true时,请根据实际环境修改该参数。可选 config.yaml配置文件示例如下:oms_meta_host: xxx.xxx.xxx.1 oms_meta_port: 2883 oms_meta_user: root@oms**** oms_meta_password: oms drc_rm_db: oms_rm drc_cm_db: oms_cm drc_cm_heartbeat_db: oms_cm_heartbeat drc_user: oms_drc_user_name drc_password: 'Ocea****' cm_url: http://xxx.xxx.xxx.2:8088 cm_location: 100 cm_region: cn-anhui 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: 123****
加载下载的 OMS 镜像文件至 Docker 容器的本地镜像仓库。
docker load -i <OMS 镜像路径>执行以下命令,启动容器。
OMS 支持通过 HTTP 协议或 HTTPS 协议访问 OMS 控制台。如果您想要安全访问 OMS,可以提供 HTTPS 证书,并将其挂载至容器内的指定目录。如果使用 HTTP 协议访问 OMS,则无需配置。
OMS_HOST_IP=xxx CONTAINER_NAME=oms_xxx IMAGE_TAG=feature_x.x.x docker run -dit --net host \ -v /data/config.yaml:/home/admin/conf/config.yaml \ -v /data/oms/oms_logs:/home/admin/logs \ -v /data/oms/oms_store:/home/ds/store \ -v /data/oms/oms_run:/home/ds/run \ # 仅在 OMS 容器中挂载 HTTPS 证书时,需要设置如下两个参数 -v /data/oms/https_crt:/etc/pki/nginx/oms_server.crt -v /data/oms/https_key:/etc/pki/nginx/oms_server.key -e OMS_HOST_IP=${OMS_HOST_IP} \ --privileged=true \ --pids-limit -1 \ --ulimit nproc=65535:65535 \ --name ${CONTAINER_NAME} \ work.oceanbase-dev.com/obartifact-store/oms:${IMAGE_TAG}参数 描述 OMS_HOST_IP 宿主机的 IP 地址。 CONTAINER_NAME 创建容器的名称。格式为 oms_xxx,请根据具体版本填写 xxx。例如,使用 OMS V3.1.0,则填写 oms_310。 IMAGE_TAG 镜像 TAG。您可以在宿主机上加载镜像后,运行 docker images语句查看。 镜像 TAG 的格式为 feature_x.x.x,请根据具体版本填写 x.x.x。例如,使用 OMS V3.1.0,则填写 feature_3.1.0。/data/oms/oms_logs
/data/oms/oms_store
/data/oms/oms_run/data/oms/oms_logs、/data/oms/oms_store和/data/oms/oms_run可以替换为在您的 OMS 部署机器上创建的挂载目录,分别存放 OMS 运行过程中产生的日志文件、日志拉取组件和同步组件生成的文件,在本机进行持久化。 注意 在后续的版本重新部署、升级中,挂载目录的位置必须保持不变。/home/admin/logs
/home/ds/store
/home/ds/run/home/admin/logs、/home/ds/store和/home/ds/run为容器内的固定目录,路径不可以修改。/data/oms/https_crt(可选)
/data/oms/https_key(可选)HTTPS 证书在 OMS 容器内的挂载位置,请根据实际情况进行替换。 如果挂载了 HTTPS 证书,OMS 容器内的 Nginx 服务将会运行在 HTTPS 模式下。您必须以 HTTPS 模式访问,才可以使用 OMS 的控制台服务。 privileged 为容器授予扩展权限。 pids-limit 配置容器的进程数限制,-1 表示不限制。 ulimit nproc 配置用户进程数的上限。 进入新容器。
docker exec -it ${CONTAINER_NAME} bash注意:
CONTAINER_NAME为创建容器的名称。格式为 oms_xxx,请根据具体版本填写 xxx。例如,使用 OMS V3.1.0,则填写 oms_310。在 root 目录下,执行元数据初始化操作。
bash /root/docker_init.sh执行命令后,初始化操作的流程如下:
在元数据库中初始化数据。
生成各组件的配置文件。
重启所有组件。
初始化 OMS 资源标签和资源组。
在执行
docker_init.sh时,请关注执行时命令行的输出。待执行成功后,会提示您 【结束】全部初始化步骤执行成功。注意:
执行过程需要耗时 2~4 分钟,请您耐心等待,切勿中断执行。
当元数据库为 OceanBase 数据库 MySQL 租户时,可能出现报错
ERROR 1235 (0A000): Modify large text/lob column not supported,直接忽略即可。docker_init.sh脚本输出的信息如下所示:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 【步骤一】校验 config.yaml 配置文件 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- python -m omsflow.scripts.units.oms_cluster_config --check /home/admin/conf/config.yaml --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 【步骤二】创建 OMS 元信息库 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- python -m omsflow.scripts.units.oms_init_manager --init-db --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 【步骤三】创建 OMS 各组件的配置文件 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- python -m omsflow.scripts.units.oms_init_manager --init-config-file --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 【步骤四】重启 OMS 所有组件 (大约需要两分钟,请耐心等待) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- supervisorctl restart crond nginx oms_console oms_drc_cm oms_drc_supervisor sshd supervisorctl status crond nginx oms_console oms_drc_cm oms_drc_supervisor sshd supervisorctl status crond nginx oms_console oms_drc_cm oms_drc_supervisor sshd --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 【步骤五】初始化 OMS 资源标签和资源组 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- python -m omsflow.scripts.units.oms_cluster_manager add_resource --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 【结束】全部初始化步骤执行成功 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
部署完成后,如果您需要修改配置,请登录至运行的 OMS 容器中进行以下操作:
根据业务需求,修改
config.yaml文件。执行命令
python -m omsflow.scripts.units.oms_init_manager --init-config-file。执行命令
supervisorctl restart oms_console oms_drc_supervisor。