Topik ini menjelaskan cara memecahkan masalah pada tugas pelacakan perubahan versi baru dengan menggunakan toolkit khusus Data Transmission Service (DTS) di client pelacakan perubahan Anda.
Informasi latar belakang
Pemecahan masalah tugas pelacakan perubahan menjadi sulit dalam skenario berikut: data yang dilacak dikonsumsi tanpa menggunakan SDK, SDK mengalami banyak perubahan, atau client pelacakan perubahan berjalan di lingkungan yang berbeda. DTS menyediakan toolkit untuk membantu memecahkan masalah pada tugas pelacakan perubahan Anda.
Penggunaan toolkit ini akan memperbarui offset konsumen dari kelompok konsumen tertentu di Konsol. Offset konsumen sisi server yang digunakan oleh mode SUBSCRIBE tidak diperbarui.
Prasyarat
Java Development Kit (JDK) telah diinstal pada client pelacakan perubahan Anda. Kami menyarankan penggunaan JDK 1.8 atau versi yang lebih baru.
Prosedur
-
Unduh toolkit dts_subscribe_sdk_dep_demo ke client dan ekstrak file tersebut.
-
Modifikasi file konfigurasi config dengan mengonfigurasi parameter yang dijelaskan dalam tabel berikut.
Tabel 1. Parameter wajib Parameter
Deskripsi
Sumber
brokerUrlTitik akhir dan nomor port saluran Data Subscription.
CatatanJika Instance ECS tempat client SDK Anda ditempatkan berada dalam VPC yang sama dengan saluran Data Subscription, gunakan alamat IP pribadi untuk langganan guna meminimalkan latensi jaringan.
Di Konsol DTS, klik ID instansi langganan target. Pada halaman Basic Information, di area Network, Anda dapat memperoleh titik akhir dan nomor port.
topicTopik saluran Data Subscription.
Di Konsol DTS, klik ID instansi langganan target. Pada halaman Basic Information, di bagian Basic Information, Anda dapat memperoleh Topic.
sidID kelompok konsumen.
Di Konsol DTS, klik ID instansi langganan target, lalu klik tab Consume Data di sebelah kiri. Anda dapat memperoleh informasi Consumer Group ID dan Account.
CatatanIni adalah password yang Anda atur saat membuat kelompok konsumen.
userNameAkun kelompok konsumen.
PeringatanJika Anda tidak menggunakan client yang disediakan dalam topik ini, Anda harus mengatur username dalam format
<Consumer group account>-<Consumer group ID>, misalnyadtstest-dtsae******bpv. Jika tidak, koneksi akan gagal.passwordPassword untuk akun tersebut.
initCheckpointOffset konsumen awal, ditentukan sebagai Unix timestamp (misalnya, 1620962769).
Penting-
Parameter ini hanya berlaku jika
subscribeModediatur ke ASSIGN danisForceUseInitCheckpointdiatur ke true. -
Anda dapat menggunakan offset konsumen untuk tujuan berikut:
-
Untuk mencegah kehilangan data setelah proses bisnis terganggu, gunakan offset konsumen terakhir untuk melanjutkan konsumsi data.
-
Saat memulai client langganan, gunakan offset konsumen yang diinginkan untuk menyesuaikan titik awal langganan dan mengonsumsi data sesuai kebutuhan.
-
Di Konsol DTS, pada tab Change Tracking, lihat Data Range instansi target. Offset konsumen harus berada dalam rentang data instansi langganan dan harus dikonversi ke Unix timestamp.
CatatanAnda dapat menggunakan mesin pencari untuk menemukan tool konversi Unix timestamp.
subscribeModeMode operasi client SDK. Nilai yang valid adalah:
-
ASSIGN: Dalam mode ini, hanya satu client SDK per kelompok konsumen yang dapat mengonsumsi data langganan.
-
SUBSCRIBE: Dalam mode ini, Anda dapat menjalankan beberapa client SDK dalam kelompok konsumen yang sama untuk disaster recovery.
N/A
isForceUseInitCheckpointMenentukan apakah langganan dipaksa dimulai dari offset
initCheckpoint. Nilai yang valid adalah true dan false.N/A
-
-
Salin file
configke direktori yang sama dengan toolkit. -
Jalankan perintah berikut di direktori toolkit.
java -jar dts_subscribe_sdk_dep_demo-1.0-SNAPSHOT-jar-with-dependencies.jar config -
Lihat file log dts-new-subscribe.log di direktori tempat perintah dijalankan. Rujuk tabel berikut untuk memecahkan masalah.
Informasi log
Deskripsi
Solusi
[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]Menunjukkan bahwa tugas langganan berjalan dengan benar.
N/A
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)brokerUrlsalah atau tidak dapat dijangkau, sehingga menyebabkan kegagalan koneksi.Masukkan
brokerUrlyang benar di fileconfig.telnet real node xxx failed, please check the networkTerjadi error jaringan yang mencegah client terhubung ke node broker DTS.
Verifikasi bahwa
brokerUrlbenar dan tidak ada firewall yang memblokir koneksi dari client Anda ke titik akhir tersebut.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)Username atau password salah, sehingga menyebabkan kegagalan koneksi.
Masukkan
userNamedanpasswordyang benar di fileconfig.com.aliyun.dts.subscribe.clients.exception.TimestampSeekException: RecordGenerator:seek timestamp for topic [cn_hangzhou_rm_bp11tv2923n87081s_rdsdt_dtsacct-0] with timestamp [1610249501] failedOffset konsumen berada di luar rentang yang ditentukan, sehingga menyebabkan kegagalan koneksi.
Di file
config, atur parameterinitCheckpointke nilai yang berada dalam rentang data instansi langganan.CatatanJika nilai parameter antrian pesan
DStoreRecordQueuedanDefaultUserRecordQueuesecara konsisten tetap 0, hal ini menunjukkan adanya bottleneck saat mengambil data dari server DTS. Jika nilainya secara konsisten tetap pada nilai default 512, hal ini menunjukkan bahwa client langganan mengonsumsi data langganan secara lambat.