全部產品
Search
文件中心

Data Transmission Service:排查訂閱任務問題

更新時間:Jul 06, 2024

本文介紹如何在訂閱用戶端使用DTS定製工具包排查新版訂閱任務問題。

背景資訊

由於訂閱任務沒有使用SDK進行消費訂閱資料、對SDK進行過較多修改以及訂閱用戶端運行環境的不同,導致排查訂閱任務問題比較困難。在此提供一個工具包,在用戶端的環境執行後可以協助定位和排除DTS的問題。

重要

使用該工具包會更新控制台上指定訂閱組的消費位點資訊,SUBSCRIBE模式依賴的服務端記錄的消費位點資訊不會更新。

前提條件

訂閱用戶端已安裝Java環境,建議安裝JDK 1.8及以上版本。

操作步驟

  1. 將工具包dts_subscribe_sdk_dep_demo下載並解壓到訂閱用戶端。

  2. 根據實際情況修改工具包中的設定檔config,設定如下參數。

    表 1. 必填參數說明

    參數

    說明

    擷取方式

    brokerUrl

    資料訂閱通道的網路地址及連接埠號碼資訊。

    說明

    如果您部署SDK用戶端所屬的ECS執行個體與資料訂閱通道屬於同一專用網路,建議通過內網地址進行資料訂閱,網路延遲最小。

    在DTS控制台單擊目標訂閱執行個體ID,在基本資料頁面的網路地區,您可以擷取網路地址及連接埠號碼資訊。

    topic

    資料訂閱通道的訂閱Topic。

    在DTS控制台單擊目標訂閱執行個體ID,在基本資料頁面的基本資料地區,您可以擷取到訂閱Topic

    sid

    消費組ID。

    在DTS控制台單擊目標訂閱執行個體ID,然後在左側單擊數據消費頁簽,您可以擷取到消費組ID和消費組的帳號資訊。

    說明

    消費組帳號的密碼已在您建立消費組時指定。

    userName

    消費組的帳號。

    警告

    如您未使用本文提供的用戶端,請按照<消費組的帳號>-<消費組ID>的格式設定使用者名稱(例如:dtstest-dtsae******bpv),否則無法正常串連。

    password

    該帳號的密碼。

    initCheckpoint

    消費位點,即SDK用戶端消費第一條資料的時間戳記,格式為Unix時間戳記,例如1620962769。

    重要
    • 本參數僅當subscribeModeASSIGN,且isForceUseInitCheckpointtrue時生效。

    • 消費位點資訊可用於:

      • 當業務程式中斷後,傳入已消費位點繼續消費資料,防止資料丟失。

      • 在訂閱用戶端啟動時,傳入所需的消費位點,調整訂閱位點,實現按需消費資料。

    在DTS控制台的數據訂閱頁簽,查看目標執行個體的數據範圍。消費位點必須在訂閱執行個體的資料範圍之內,並需轉化為Unix時間戳記。

    說明

    Unix時間戳記轉換工具可用搜尋引擎擷取。

    subscribeMode

    SDK用戶端的使用模式,取值為

    • ASSIGN:ASSIGN模式,即一個消費組下僅支援一個SDK用戶端消費訂閱資料。

    • SUBSCRIBE:SUBSCRIBE模式,即支援在同一個消費組下同時啟動多個SDK用戶端實現災備。

    isForceUseInitCheckpoint

    是否強制使用填入的位點進行訂閱資料,取值為truefalse

  3. 將設定檔config複製到與工具包相同的路徑下。

  4. 在工具包路徑中運行如下命令。

    java -jar dts_subscribe_sdk_dep_demo-1.0-SNAPSHOT-jar-with-dependencies.jar config

  5. 在命令運行路徑中查看dts-new-subscribe.log記錄檔,參考下表進行分析。

    日誌資訊

    說明

    解決方案

    [2022-01-04 17:10:53.949] [INFO ] 
    [com.aliyun.dts.subscribe.clients.recordprocessor.EtlRecordProcessor] 
    [com.aliyun.dts.subscribe.clients.recordprocessor.DefaultRecordPrintListener:49] -
    RecordID [13082769]
    RecordTimestamp [1641284702]
    Source [{"sourceType": "MySQL", "version": "5.6.16-log"}]
    RecordType [HEARTBEAT]

    表示訂閱任務正常。

    ERROR CheckResult{isOk=false, errMsg='telnet dts-cn-hangzhou.aliyuncs.com:18009 failed, please check the network and if the brokerUrl is correct'} (com.aliyun.dts.subscribe.clients.DefaultDTSConsumer)

    DProxy地址填寫錯誤,導致無法串連。

    config設定檔填入正確的brokerUrl

    telnet real node xxx failed, please check the network

    訂閱任務與broker地址通訊異常,導致無法串連。

    config設定檔填入正確的brokerUrl

    ERROR CheckResult{isOk=false, errMsg='build kafka consumer failed, error: org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata, probably the user name or password is wrong'} (com.aliyun.dts.subscribe.clients.DefaultDTSConsumer)

    使用者名稱或密碼填寫錯誤,導致無法串連。

    config設定檔填入正確的userNamepassword

    com.aliyun.dts.subscribe.clients.exception.TimestampSeekException: RecordGenerator:seek timestamp for topic [cn_hangzhou_rm_bp11tv2923n87081s_rdsdt_dtsacct-0] with timestamp [1610249501] failed

    消費位點不在規定範圍,導致無法串連。

    config設定檔填入在訂閱執行個體的資料範圍內的消費位點參數initCheckpoint

    說明

    若訊息佇列參數DStoreRecordQueue和DefaultUserRecordQueue的參數值一直是0,則說明從服務端(DTS)讀取資料緩慢;若參數值一直是預設值512,則說明是用戶端消費訂閱資料緩慢。