本文將會為您介紹通過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加入到白名單中。