【 使用环境 】测试环境
【 OB or 其他组件 】oms
【 使用版本 】4.2.5
【问题描述】OMS 数据迁移 同步表结构一直初始化状态
【复现路径】新部署的oms,新加的同步
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
您的问题可能存在误解,实际上据我所知 OMS 在进行数据迁移或同步时,如果遇到表结构同步卡住的情况,通常是因为一些配置不当或者环境问题导致的。根据您提供的信息,我们可以从以下几个方面来排查:
-
Kafka 版本兼容性:请确保您的 Kafka 版本与 OMS 社区版兼容。OMS 社区版支持的 Kafka 版本为 V0.9、V1.0 和 V2.x [1]。特别是当 Kafka 版本为 V0.9 时,不支持结构同步 [1]。如果您的 Kafka 版本不符合这些要求,请升级或降级 Kafka 到支持的版本。
-
同步对象的命名规则:OMS 社区版仅支持同步库名、表名和列名为 ASCII 码且不包含特殊字符(包括 |"’`()=;/& 和换行)的对象 [1]。请检查您的表名是否符合这些规则。此外,待同步的表名和其中的列名不能包含中文字符 [1]。
-
数据源标识和用户账号:数据源标识和用户账号等,在 OMS 系统内全局唯一 [1]。请确保没有重复的数据源标识或用户账号。
-
源端表结构变更:如果在同步过程中对源端进行了表结构变更,例如重命名表名,且新的表名不在同步对象中,则这部分数据将不会被同步至目标 Kafka 实例中 [1]。请确保同步期间不要更改表结构或表名。
建议您按照以上步骤逐一排查,并检查是否有相关的日志信息可以帮助定位问题。如果问题仍然存在,建议使用 obdiag
工具收集诊断信息,并联系 OceanBase 的技术支持团队进一步分析。
具体信息可参考以下文档:
你服务器时间不对呀。怎么都是9-9日的?
根据您提供的截图信息,可以看出当前正在进行一项从 MySQL 到 OceanBase 的数据迁移任务,该任务包括结构迁移、全量迁移以及增量同步。目前结构迁移的状态显示为“运行中”,但进度只有 2%,这可能是导致您认为“卡住”的原因。针对这种情况,我们可以从以下几个方面进行排查:
-
资源限制:请检查您的源端 MySQL 服务器和目标端 OceanBase 集群的资源使用情况,包括 CPU、内存、磁盘 I/O 等。如果资源不足,可能会导致迁移速度缓慢。您可以尝试优化资源分配或减少其他非必要的负载。
-
网络延迟:数据迁移过程中,源端和目标端之间的网络状况也会影响迁移效率。请确保两者之间的网络连接稳定且延迟较低。可以通过 ping 或 traceroute 命令测试网络状况。
-
数据量大小:如果源端数据库的数据量非常大,那么即使一切正常,结构迁移也可能需要较长时间才能完成。您可以查看源端数据库的具体数据量,评估迁移所需的时间。
-
并发设置:在 OMS 中,全量迁移的并发速度设置为“平稳”,这可能意味着迁移任务是以较低的并发度执行的。您可以尝试调整迁移任务的并发度设置,以加快迁移速度。但是请注意,过高并发度可能会对源端或目标端系统造成压力。
-
异常对象处理:截图中提到“只查看异常对象”,建议您检查是否有某些特定的对象迁移失败或异常,这可能是导致整体迁移进度缓慢的原因之一。通过查看具体的异常对象及其错误信息,有助于定位问题所在。
-
日志信息:最后,建议您查看 OMS 的相关日志文件,特别是迁移任务的日志,以获取更详细的迁移过程信息。这有助于进一步诊断问题。
综上所述,您的迁移任务可能并不是真正意义上的“卡住”,而是由于某些因素导致迁移速度较慢。建议您从上述几个方面入手进行排查,并结合具体的日志信息来定位问题。如果问题依然无法解决,建议联系 OceanBase 的技术支持团队获取进一步的帮助。
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
看看日志。
是这个日志吗? /home/admin/oms/oms_logs/ghana/Ghana/dbcat.log
是的,能看到报错信息吗?
看日志基本都是执行sql超时。
你把sql拿去手动执行下看看,会不会报错?源库很慢?还是网络不稳定?
2024-09-09 11:17:46.686 [DBCat-ThreadPool-2] ERROR c.o.o.d.j.t.JdbcTemplate - [] SQL: SELECT
C.CONSTRAINT_NAME AS CONSTRAINT_NAME,
S.COLUMN_NAME AS COLUMN_NAME,
K.ORDINAL_POSITION AS ORDINAL_POSITION,
S.COLLATION AS COLLATION,
S.SUB_PART AS SUB_PART,
S.INDEX_COMMENT AS INDEX_COMMENT
FROM information_schema.TABLE_CONSTRAINTS C,
information_schema.KEY_COLUMN_USAGE AS K,
information_schema.STATISTICS AS S
WHERE C.TABLE_SCHEMA=K.TABLE_SCHEMA AND C.TABLE_NAME=K.TABLE_NAME AND
C.TABLE_SCHEMA=S.TABLE_SCHEMA AND C.TABLE_NAME=S.TABLE_NAME AND
C.CONSTRAINT_SCHEMA=K.CONSTRAINT_SCHEMA AND C.CONSTRAINT_NAME=K.CONSTRAINT_NAME AND
C.CONSTRAINT_NAME=S.INDEX_NAME AND K.ORDINAL_POSITION=S.SEQ_IN_INDEX AND
C.TABLE_SCHEMA=? AND C.TABLE_NAME=? AND C.CONSTRAINT_TYPE=?
ORDER BY K.ORDINAL_POSITION ASC, Args: [ph_aos_dev, fence_small_parcel, UNIQUE]
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet successfully received from the server was 955,885 milliseconds ago. The last packet sent successfully to the server was 955,899 milliseconds ago.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1009)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:227)
at com.oceanbase.obtools.dbdiff.jdbc.template.JdbcTemplate.queryMap(JdbcTemplate.java:215)
at com.oceanbase.obtools.dbdiff.accessor.mysql.MySqlMetadataAccessor.queryUniqueMapping(MySqlMetadataAccessor.java:640)
at com.oceanbase.obtools.dbdiff.accessor.mysql.MySqlMetadataAccessor$4.call(MySqlMetadataAccessor.java:361)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:853)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
。。。
SQL: SELECT
COLUMN_NAME,
ORDINAL_POSITION,
COLUMN_DEFAULT,
IS_NULLABLE,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
CHARACTER_OCTET_LENGTH,
NUMERIC_PRECISION,
NUMERIC_SCALE,
DATETIME_PRECISION,
CHARACTER_SET_NAME,
COLLATION_NAME,
COLUMN_TYPE,
EXTRA,
REPLACE(COLUMN_COMMENT,'''','''''') AS COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=? AND TABLE_NAME=?
ORDER BY ORDINAL_POSITION ASC, Args: [ph_aos_dev, task_info_detail_log]
com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 120000, active 0, maxActive 24, creating 1, createElapseMillis 1140716, createErrorCount 372
2024-09-09 12:03:41.368 [Thread-184] INFO c.o.o.d.a.m.MySqlMetadataAccessor - [4fde7704-6ff1-40f7-a1e2-19c9472479c7] Query 1 tables elapsed 4.342 min
Query 1 tables elapsed 4.342 min 《–获取一个表都元数据新建就花了4.3分钟
源库执行sql太慢,优化源库性能后已经解决了。谢谢。