OceanBase數據庫遷移工具介紹和部署
- 核心組件
- 遷移支持
- 部署要求
- 單節點部署
- 查看日志
OceanBase 遷移服務(OceanBase Migration Service, OMS)是OceanBase數據庫提供的一種支持同構或異構數據源與OceanBase數據庫之間進行數據交互的服務,具備在線遷移存量數據和實時同步增量數據的能力。
核心組件
OMS社區版內部主要包含:
- 管理控制臺:進行一站式遷移調度。
- DBCat:數據對象采集和轉換組件。
- 增量拉取組件
Store
、增量同步組件Incr-Sync
、全量導入組件Full-Import
和全量校驗組件Full-Verification
。 - 基礎服務組件:集群管理、資源池管理、高可用組件和元數據管理等多個組件,以保證遷移模塊的高效調度和穩定運行。
OMS社區版核心組件如下:
分類 | 名詞解釋 |
---|---|
管控組件 | - Ghana :OMS社區版控制臺。- CM :OMS社區版的集群管理服務。- Supervisor :OMS社區版的代理服務,負責接收集群管理服務下發的指令并執行。 |
增量解析組件 | - Store :用于對數據庫事務日志進行拉取解析,并對解析后的日志記錄按統一格式存儲。下游可以從Store中以一致的方式消費增量數據,無需關心不同數據庫間日志格式差異。- LogProxy :OceanBase數據庫日志代理。 |
框架組件 | - Incr-Sync :增量同步組件:從增量拉取組件中請求增量數據,并根據用戶配置的同步對象進行數據過濾,然后在保證事務時序性及事務一致性的前提下,將日志記錄同步至目標實例。- Full-Import :全量導入組件:負責源庫表對象中存量數據的遷移和部分增量數據的同步。- Full-Verification :全量校驗組件:負責遷移表中的行記錄進行全字段校驗,并針對不一致的數據生成訂正語句。 |
其它 | - MetaDB :基于容器部署的OceanBase數據庫服務,并內置了OceanBase數據庫代理,便于外部直接訪問。MetaDB可以用于OCP、ODC和OMS等產品的元數據存儲。- InfluxDB :基于容器部署的時間序列數據庫服務,用于存儲OMS社區版的數據居傳輸項目的監控數據。 |
遷移支持
OMS社區版V4.2.9
支持從以下異構數據庫遷移到OceanBase:
- MySQL:V5.5、V5.6、V5.7、V8.0
- MariaDB:V10.2
- TiDB:V2.x、V3.x、V4.x、V5.x、V6.x、V7.x、V8.x
- PostgreSQL:V10.x、V11.x、V12.x、V13.x、V14.x、V15.x、V16.x
- GreenPlum:V4、V5.1
- HBase:V1.2.0-cdh5.15.2、社區版 V2.x
- Redis:V2.8.0 及之后版本
- Hive:V2.1.1、V3.1.3
OMS社區版V4.2.9
支持到以下消息組件的數據同步:
- Kafka V0.9、V1.0、V2.x
- RocketMQ V4.7.1
部署要求
OMS部署前提:
- 需要安裝docker環境,版本不低于V1.13。
- 需要安裝一個存儲OMS元數據的數據庫(MySQL或OceanBase),服務器配置為2C4G即可。
- 如果需要收集和展示OMS歷史監控數據,還需要部署InfluxDB時序數據庫。
數據庫到數據庫的同步場景下,各組件部署所需要的資源:
CPU | 內存 | 磁盤 | |
---|---|---|---|
基礎服務 | 1C | 1G | 100G |
管控組件 | 4C | 7G | 100G |
Store | 4C | 8G | 取決于數據庫端日志生成速度和OMS中增量數據的保存時間 |
Incr-Sync | 2C | 8G | 5G |
Full-Import | 2C | 4G | 5G |
總計 | 13C | 28G | >210G |
數據庫到大數據的同步場景下,各組件部署所需要的資源:
CPU | 內存 | 磁盤 | |
---|---|---|---|
基礎服務 | 1C | 1G | 100G |
管控組件 | 4C | 7G | 100G |
Store | 4C | 8G | 取決于數據庫端日志生成速度和OMS中增量數據的保存時間 |
Incr-Sync | 2C | 4G | 5G |
Full-Import | 2C | 4G | 5G |
總計 | 13C | 24G | >210G |
單節點部署
?? OMS下載地址:https://www.oceanbase.com/softwarecenter
?? 遷移同步工具 => OceanBase遷移服務 V4.2.9_CE
-
部署存儲OMS元數據的數據庫(MySQL或OceanBase)。
-
加載OMS鏡像文件到docker環境:
sudo docker load -i oms_4.2.9-ce.tar.gz
加載完成后,檢查鏡像唯一標識符:
$ sudo docker images
REPOSITORY TAG IMAGE ID
work.oceanbase-dev.com/obartifact-store/oms feature_4.0.0-ce 2786e8a6eccd
這里<OMS_IMAGE>
可以是2786e8a6eccd
或者work.oceanbase-dev.com/obartifact-store/oms:feature_4.0.0-ce
。
- (可選)部署時序數據庫。
如果需要能夠收集和展示監控數據庫,可以部署時序數據庫InfluxDB。目前時序數據庫僅支持單節點部署,不具備高可用能力,可以將時序數據庫和OMS社區版混合部署在同一臺宿主機上。
📖 部署InfluxDB參考:https://www.oceanbase.com/docs/community-oms-cn-1000000002947306
- 從加載的鏡像中獲取部署腳本
docker_remote_deploy.sh
。
sudo docker run -d --net host --name oms-config-tool <OMS_IMAGE> bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool# 替換<OMS_IMAGE>為鏡像唯一標識符
sudo docker run -d --net host --name oms-config-tool work.oceanbase-dev.com/obartifact-store/oms:feature_4.0.0-ce bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool
- 準備配置文件。
配置文件config.yaml
格式如下。
# OMS社區版元數據庫信息(MySQL或OceanBase)
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}# 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}# 用戶自定義組件端口號
# 指定 GHANA 服務的端口號
ghana_server_port: xxxxx# 指定 Nginx 服務的端口號
nginx_server_port: xxxxx# 指定 CM 服務的端口號
cm_server_port: xxxxx# 指定 Supervisor 服務的端口號
supervisor_server_port: xxxxx# 指定 sshd 服務的端口號
sshd_server_port: xxxxx
示例如下:
oms_meta_host: xxx.xxx.xxx.1
oms_meta_port: 2883
oms_meta_user: oms_meta_user
oms_meta_password: ********
drc_rm_db: oms_rm
drc_cm_db: oms_cm
drc_cm_heartbeat_db: oms_cm_heartbeat
cm_url: http://xxx.xxx.xxx.2:8088
cm_location: 100
cm_region: cn-beijing
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: *******
ghana_server_port: xxxxx
nginx_server_port: xxxxx
cm_server_port: xxxxx
supervisor_server_port: xxxxx
sshd_server_port: xxxxx
- 通過部署腳本啟動部署工具。
bash docker_remote_deploy.sh -o <OMS容器掛載目錄> -c <config.yaml配置文件地址> -i <本機IP地址> -d <OMS_IMAGE>
如果部署失敗,可以登錄至運行的OMS容器中,查看/home/admin/logs
目錄下以docker_init
為前綴的.log
文件,獲取日志信息。如果OMS容器未成功啟動,則無法獲取日志。
- 部署完成后,登錄Web頁面,設置admin和root初次登錄密碼。
OMS社區版控制臺的訪問地址:部署OMS社區版的宿主機的IP地址:8089
。
檢查OMS狀態:
supervisorctl status
如果nginx、oms_console、oms_drc_cm、oms_drc_supervisor、sshd服務都處于RUNNING狀態即為正常。
📖部署完成后,如果需要修改配置,請進行以下操作:
- 登錄至運行的OMS社區版容器。
- 根據業務需求,修改
/home/admin/conf/config.yaml
文件。- 執行命令
python -m omsflow.scripts.units.oms_init_manager --init-config-file
。- 執行命令
supervisorctl restart oms_console oms_drc_supervisor
。
查看日志
- Console組件日志的默認目錄為
/home/admin/logs/ghana/Ghana
。 - CM組件日志的默認目錄為
/home/admin/logs/cm/log
。 - Store組件日志的默認目錄為
/home/ds/store/store{storeport}/log
。也可以在OMS社區版控制臺查看Store組件日志。 - Full-Import/Incr-Sync組件日志的默認目錄為
/home/ds/run/{組件ID}/logs
。也可以在OMS社區版控制臺查看Full-Import/Incr-Sync組件日志。 - Full-Verification組件日志的目錄為
/home/ds/run/{name}/logs
。也可以在OMS社區版控制臺查看Full-Verification組件日志。 - Supervisor組件日志:根據
/home/ds/supervisor/config/drc.properties
文件中logging.path
項找到Supervisor組件日志所在位置。
References
【1】https://www.oceanbase.com/docs/community-oms-cn-1000000002947331