本文将会为您介绍通过DataWorks同步数据至Hologres时,常见的问题以及对应的排查手段,以帮助您能在同步遇见问题时能快速的解决。

开源DataX如何将数据同步至Hologres?

开源DataX可以通过选用Hologres Writer,将数据同步至Hologres,相比传统的PostgreSQL Writer,性能会更好。目前Connector已经开源,详情请参见Git查看使用方式

报错:Holohub does not binary type of Hologres for now?

  • 原因:DataWorks的写入模式使用了SDK模式,建Hologres表时存在不支持的数据类型,比如JSONB等,该模式下支持的数据类型较少。
  • 解决措施:请修改同步模式为INSERT模式。

报错:internal error:Connect timeout,Connection refused.

  • 原因:某个原因导致Hologres节点重启了。
  • 解决措施:对报错的任务进行重试,然后联系技术支持同学进行排查。

报错:ERROR:insufficient data left in message;nest exception is org.postgresql.

报错
  • 原因:包含了脏数据。
  • 解决措施:检查写入的数据并进行过滤。

报错:ERROR:internal error :column 2501 is not found in SparseSchema.

报错

解决措施:可进行重试,如果重试仍然报错请联系技术支持同学。

报错:ERROR Worker - should not happen.

[embedded-holo-client-worker] ERROR Worker - should not happenjava.lang.NoSuchMethodError: org.postgresql.model.Column.setPrecision(I)V at com.alibaba.hologres.org.postgresql.util.MetaUtil.getRecordSchema(MetaUtil.java:274) ~[holo-client-1.2.16.3.jar:na]
  • 原因:使用JDBC、Driver两个包,导致冲突。
  • 解决措施:请检查项目中的Holo-ClientPostgreSQL-Holo,请删除PostgreSQL-Holo依赖,仅保留一个Holo-Client版本。

报错:Refresh meta timeout, target version is xxx but current version is yyy.

  • 原因:某些原因导致Hologres有个节点进行了重启或者频繁的做DDL,导致节点与其他节点版本对应不齐,从而出现报错。
  • 解决方法:快速恢复的办法是进行实例重启,也可以查找活跃Query,Kill运行时间较长的Query,详情请参见Query管理

报错:同步数据出现业务脏数据情况,数据类型转换一处,转位long类型出现溢出。

  • 原因:同步时存在不支持的数据类型,比如MySQL BIGINT(20) UNSIGNED。
  • 解决方法:修改Hologres建表类型,比如修改为TEXT,详情请参见MySQL数据类型映射

报错:Rejected by ip white list xxx .

示例
  • 原因:Hologres开启了白名单,导致写入时会被白名单拦截。
  • 解决方法:
    • 如果通过模式使用的是SDK,请修改同步模式为INSERT模式。
    • 如果是INSERT模式仍然报错,说明是IP被拦截,可以将报错中的IP加入到白名单中。