点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
环境介绍
某大型国企核心数据库迁移至OceanBase数据库,规划使用OMS进行数据迁移。
基本环境如下:
源端 Oracle 19c_X86平台。 目标端 OceanBase 3.2.4.5_X86平台。 迁移工具 OceanBase 迁移服务(OceanBase Migration Service),简称OMS版本OMS3.2.2-bp1_X86平台。
问题描述分析
2.1 问题描述
规划完成迁移链路后,使用OMS发起迁移链路,迁移链路包含表结构迁移、全量数据迁移、增量数据库迁移(含DDL同步),迁移过程中多条链路卡在了结构迁移,有几张表状态一直处于创建中,具体如下:

2.2 问题分析
首先在目标库确定此部分表未创建成功;
然后通过命令进入OMS容器内排查组件日志;
docket exec -it oms bin/sh
cat /home/admin/logs/ghana/Ghana/common-error.log
cat /home/admin/logs/ghana/Ghana/database.log
cat /home/admin/logs/ghana/Ghana/dbcat.log
排查日志均未出现任何错误;
接着对链路进行重启,再次排查组件日志均未发现任何错误。
最后怀疑可能新版本OMS遇到了bug,提个工单确认此问题在OMS4.2.3及之前版本都存在,预计在4.2.4中修复。
解决方案
根据此问题,工程师提供了确认此bug的一个action及处理方案:
步骤1 登录OMS的meta库进入oms_rm模式中:
obclient -hxx.xx.xx.xx -P2883 -uroot@oms_meta_xx#meta_cluster -p'******' -Doms_rm -A -c
步骤2 根据OMS问题链路中获取链路项目ID:
select * from oms_step where project_id = '项目id' and step_name = 'STRUCT_TRANSFER';

步骤3 根据步骤2中sql查出来的step_info里的job_id字段查询,查询结果的数据显示 record_status = APPLYING,action_id = null,即可判定为该缺。
select * from oms_struct_migration_record where task_id
= '第一条sql查出来的step_info里的job_id字段' and record_status = 'APPLYING';

步骤4 手动将状态调整为FETCHED:
update oms_struct_migration_record set record_status='FETCHED' where task_id
= '第一条sql查出来的step_info里的job_id字段' and record_status = 'APPLYING';

步骤5 重启OMS问题链路恢复
总结
OMS提供一种支持同构或异构数数据源与OceanBase数据库之间数据交付的服务,同时又具备在线迁移和实时同步增量的能力,通过可视化平台简单配置即可实时迁移数据。
作为运维使用人员,需掌握迁移工具架构组成,以便出现问题时及时定位,提高效率。

本文作者:王某人(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




