All Products
Search
Document Center

Hologres:Konsumsi data binlog Hologres dengan Flink

Last Updated:Jun 22, 2026

Topik ini menjelaskan cara menggunakan Realtime Compute for Apache Flink untuk mengonsumsi data binlog Hologres secara real time.

Catatan penggunaan

Sebelum mengonsumsi data binlog Hologres, perhatikan hal-hal berikut:

  • Anda hanya dapat mengonsumsi data binlog dari Hologres V0.9 atau versi yang lebih baru. Anda hanya dapat mengonfigurasi daftar putih engine untuk Hologres V1.3.21 atau versi yang lebih baru. Jika Anda mengaktifkan daftar putih pada instans yang menjalankan versi sebelum Hologres V1.3.21, konsumsi binlog akan gagal. Jika versi instans Anda lebih lama dari yang disyaratkan, Anda dapat Mendapatkan dukungan online untuk Hologres untuk bantuan.

  • Hologres mendukung fitur binlog di tingkat tabel untuk tabel berorientasi baris dan tabel berorientasi kolom. Mulai dari Hologres V1.1, tabel penyimpanan hibrida baris-kolom juga didukung. Setelah Anda mengaktifkan fitur binlog, secara teoretis tabel berorientasi kolom memiliki overhead yang lebih tinggi dibandingkan tabel berorientasi baris. Oleh karena itu, untuk skenario dengan pembaruan data yang sering, kami menyarankan agar Anda mengaktifkan fitur binlog untuk tabel berorientasi baris.

  • Untuk informasi lebih lanjut tentang dukungan binlog serta cara mengaktifkan dan mengonfigurasi fitur ini, lihat Berlangganan binlog Hologres.

  • Hanya Realtime Compute for Apache Flink yang disediakan oleh Alibaba Cloud yang mendukung pengonsumsian data binlog Hologres. Dalam mode HoloHub, pengonsumsian data binlog Hologres dengan Flink hanya mendukung tipe data sederhana. Mulai dari Flink VVR 6.0.3, Anda dapat mengonsumsi data binlog Hologres dalam mode JDBC. Dibandingkan dengan mode HoloHub, mode JDBC mendukung lebih banyak tipe data. Untuk informasi selengkapnya, lihat Pemetaan tipe data antara Blink/Flink dan Hologres. Mode ini memerlukan izin tambahan. Untuk detailnya, lihat Izin.

  • Anda tidak dapat mengonsumsi data binlog dari tabel partisi induk.

  • Hologres V2.0 memberikan dukungan terbatas untuk mode HoloHub. Mulai dari V2.1, mode HoloHub ditinggalkan dan sepenuhnya digantikan oleh mode JDBC. Sebelum meningkatkan instans Hologres Anda, rujuk ke Beralih dari mode HoloHub ke mode JDBC untuk memeriksa Pekerjaan Flink Anda yang saat ini menggunakan mode HoloHub, tingkatkan Pekerjaan Flink VVR Anda sesuai, lalu tingkatkan instans Hologres Anda.

Izin

  • Berbeda dengan mode HoloHub, mode JDBC mendukung akun Hologres kustom saat Anda menggunakan Realtime Compute for Apache Flink untuk mengonsumsi data binlog Hologres.

  • Untuk mengonsumsi data binlog Hologres dalam mode HoloHub, Pekerjaan Flink Anda memerlukan izin baca dan tulis pada tabel tersebut.

  • Untuk mengonsumsi data binlog Hologres dalam mode JDBC, prasyarat berikut berlaku: Untuk informasi selengkapnya, lihat Mengonsumsi data binlog menggunakan JDBC.

    1. Ekstensi hg_binlog telah dibuat. Ekstensi ini dibuat secara default di Hologres V2.0 dan versi yang lebih baru.

    2. Pengguna adalah superuser instans, atau memiliki izin owner pada tabel target dan izin peran replikasi untuk instans tersebut.

Mengonsumsi data binlog dengan Flink

Realtime Compute for Apache Flink yang menggunakan VVR 2.4 atau versi yang lebih baru mendukung konsumsi data binlog secara real time menggunakan Hologres Connector. Bagian berikut menjelaskan cara menggunakan fitur ini.

DDL tabel sumber dalam mode non-CDC

Dalam mode ini, data binlog yang dikonsumsi oleh Source diteruskan ke node downstream sebagai data Flink biasa. Artinya, semua data diperlakukan sebagai data bertipe Insert, dan Anda dapat memilih cara memproses data berdasarkan tipe tertentu hg_binlog_event_type sesuai kebutuhan bisnis Anda. Setelah binlog diaktifkan untuk tabel Hologres, Anda dapat menggunakan DDL berikut untuk tabel sumber (dalam mode non-CDC) di Flink guna mengonsumsi binlog secara real time.

create table test_message_src_binlog_table(
  hg_binlog_lsn BIGINT,
  hg_binlog_event_type BIGINT,
  hg_binlog_timestamp_us BIGINT,
  id INTEGER,
  title VARCHAR,
  body VARCHAR
) with (
  'connector'='hologres',
  'dbname'='<yourDbname>',
  'tablename'='<yourTablename>',
  'username'='<yourAccessID>',
  'password'='<yourAccessSecret>',
  'endpoint'='<yourEndpoint>',
  'binlog' = 'true',
  'binlogMaxRetryTimes' = '10',
  'binlogRetryIntervalMs' = '500',
  'binlogBatchReadSize' = '100'
);
  • Tiga parameter binlogxxx merupakan bidang sistem binlog. Nama dan tipenya tetap dan tidak dapat diubah.

  • Bidang lainnya sesuai dengan bidang yang Anda definisikan sendiri dan harus ditulis dalam huruf kecil semua.

DDL tabel sumber dalam mode CDC

Dalam mode ini, Source mengonsumsi data binlog dan secara otomatis menetapkan tipe Flink RowKind yang benar (INSERT, DELETE, UPDATE_BEFORE, atau UPDATE_AFTER) untuk setiap baris berdasarkan hg_binlog_event_type. Hal ini memungkinkan sinkronisasi cermin data tabel, mirip dengan fitur CDC di MySQL dan PostgreSQL.

Catatan

Tabel sumber binlog Hologres dalam mode CDC saat ini tidak mendukung definisi watermark. Jika Anda perlu melakukan agregasi jendela, Anda dapat menggunakan pendekatan tanpa jendela. Untuk informasi selengkapnya, lihat Bagaimana cara menerapkan agregasi tingkat menit ketika tabel sumber CDC tidak mendukung fungsi jendela?.

Setelah Anda mengaktifkan fitur binlog untuk tabel Hologres, Anda dapat menggunakan DDL berikut di Flink untuk membuat tabel sumber guna mengonsumsi data binlog secara real time dalam mode CDC.

create table test_message_src_binlog_table(
  id INTEGER,
  title VARCHAR,
  body VARCHAR
) with (
  'connector'='hologres',
  'dbname'='<yourDbname>',
  'tablename'='<yourTablename>',
  'username'='<yourAccessID>',
  'password'='<yourAccessSecret>',
  'endpoint'='<yourEndpoint>',
  'binlog' = 'true',
  'cdcMode' = 'true',
  'binlogMaxRetryTimes' = '10',
  'binlogRetryIntervalMs' = '500',
  'binlogBatchReadSize' = '100'
);

Tabel sumber untuk data penuh dan inkremental

Mulai dari VVR engine 1.13-vvr-4.0.13 dan Hologres V0.10, tabel sumber CDC binlog Hologres mendukung konsumsi terintegrasi data penuh dan inkremental. Metode ini pertama-tama membaca data historis penuh dari database, lalu beralih dengan lancar untuk membaca data inkremental dari binlog. Untuk informasi selengkapnya, lihat Gudang data real-time Hologres.

Tabel sumber binlog dalam mode JDBC

Mulai Flink VVR 6.0.3, Anda dapat mengonsumsi data binlog Hologres dalam mode JDBC. Dibandingkan dengan mode HoloHub, mode JDBC mendukung lebih banyak tipe data dan akun kustom. Untuk informasi selengkapnya tentang cara menggunakan mode JDBC, lihat Gudang data real-time Hologres.

Beralih dari mode HoloHub ke mode JDBC

Hologres mulai menghentikan mode HoloHub secara bertahap sejak V2.0. Jika Anda perlu meningkatkan instans Hologres Anda, Anda harus beralih dari mode HoloHub ke mode JDBC seperti yang dijelaskan di bawah ini.

Tingkatkan ke V2.1

Sebelum meningkatkan instans Hologres Anda ke V2.1, pilih salah satu solusi berikut untuk memeriksa Pekerjaan Flink dan instans Hologres Anda guna memastikan Pekerjaan berjalan sesuai harapan.

  • (Solusi 1) (Direkomendasikan) Tingkatkan versi Flink VVR Anda ke 8.0.7 atau versi yang lebih baru. Flink secara otomatis beralih dari mode HoloHub ke mode JDBC.

  • (Solusi 2) Tingkatkan Flink VVR Anda ke versi antara 6.0.7 dan 8.0.5. Tambahkan parameter 'sdkMode'='jdbc' ke tabel sumber dan restart Pekerjaan. Anda juga harus memberikan pengguna salah satu set izin berikut. Setelah memastikan Pekerjaan berjalan dengan baik, Anda dapat meningkatkan instans Hologres.

    • (Opsi 1) izin superuser pada instans.

    • (Opsi 2) izin owner pada tabel target, izin CREATE DATABASE, dan izin peran replikasi untuk instans.

  • (Solusi 3) (Tidak direkomendasikan) Tingkatkan versi Flink VVR ke 8.0.6. Flink secara otomatis beralih dari mode HoloHub ke mode JDBC. Namun, VVR 8.0.6 memiliki cacat yang diketahui yang dapat menyebabkan deployment Pekerjaan timeout jika tabel dimensi berisi terlalu banyak bidang. Untuk informasi selengkapnya, lihat Catatan Rilis Hologres Connector.

  • (Opsional) Jika Anda memiliki banyak Pekerjaan Flink VVR, gunakan petunjuk berikut untuk mengidentifikasi Pekerjaan dan tabel mana yang perlu ditingkatkan.

Tingkatkan ke V2.0

  • (Solusi 1) (Direkomendasikan) Tingkatkan versi Flink VVR Anda ke 8.0.6 atau versi yang lebih baru. Flink secara otomatis beralih dari mode HoloHub ke mode JDBC. Namun, VVR 8.0.6 memiliki cacat yang diketahui yang dapat menyebabkan deployment Pekerjaan timeout jika tabel dimensi berisi terlalu banyak bidang. Untuk informasi selengkapnya, lihat Catatan Rilis Hologres Connector. Kami menyarankan agar Anda meningkatkan ke VVR 8.0.7.

  • (Solusi 2) Tingkatkan versi Flink VVR Anda ke 8.0.4 atau 8.0.5 dan restart Pekerjaan Flink. Anda juga harus memberikan pengguna salah satu set izin berikut. Setelah memastikan Pekerjaan berjalan dengan baik, Anda dapat meningkatkan instans Hologres.

    • (Opsi 1) izin superuser pada instans.

    • (Opsi 2) izin owner pada tabel target, izin CREATE DATABASE, dan izin peran replikasi untuk instans.

  • (Solusi 3) Tingkatkan versi Flink VVR Anda ke versi antara 6.0.7 dan 8.0.3. Flink terus menggunakan mode HoloHub untuk mengonsumsi data binlog.

Jika Anda memiliki banyak Pekerjaan Flink VVR yang mengonsumsi data binlog Hologres, Anda dapat menggunakan metode berikut untuk mengidentifikasi Pekerjaan dan tabel yang perlu ditingkatkan.

Catatan

Tool ini hanya dapat memperoleh informasi untuk jenis Pekerjaan berikut:

  • Pekerjaan SQL yang menggunakan DDL untuk mendefinisikan tabel.

  • Pekerjaan Catalog yang menggunakan hint untuk menentukan parameter.

Tool ini tidak mendukung pengambilan informasi untuk Pekerjaan JAR atau tabel Catalog yang tidak memiliki parameter hint.

  1. Unduh tool open-source find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar.

  2. Pada command line lokal, buka direktori tool open-source tersebut dan jalankan perintah berikut untuk melihat semua Pekerjaan dan tabel yang perlu ditingkatkan.

    Catatan

    Untuk menjalankan perintah berikut, Anda harus memiliki lingkungan Java yang terinstal, dengan JDK 8 atau versi yang lebih baru.

    java -cp find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar com.alibaba.hologres.FindIncompatibleFlinkJobs <region> <url> <AccessKeyID> <AccessKeySecret> <binlog/rpc>
    # Contoh
    java -cp find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar com.alibaba.hologres.FindIncompatibleFlinkJobs Beijing https://vvp.console.aliyun.com/web/xxxxxx/en/#/workspaces/xxxx/namespaces/xxxx/operations/stream/xxxx my-access-key-id my-access-key-secret binlog

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    region

    Wilayah tempat ruang kerja Realtime Compute for Apache Flink Anda berada. Untuk daftar nilai yang valid, lihat tabel Nilai Wilayah.

    url

    URL dari Pekerjaan apa pun di ruang kerja Realtime Compute for Apache Flink target.

    AccessKey ID

    ID AccessKey untuk akun yang memiliki izin mengakses ruang kerja Realtime Compute for Apache Flink.

    AccessKey secret

    Rahasia AccessKey untuk akun yang memiliki izin mengakses ruang kerja Realtime Compute for Apache Flink.

    binlog/rpc

    Jenis konten Pekerjaan yang akan diperiksa. Nilai yang valid:

    • binlog: Memeriksa semua tabel sumber binlog Hologres di semua Pekerjaan dalam ruang kerja.

    • rpc: Memeriksa semua tabel dimensi atau tabel hasil yang menggunakan mode rpc di semua Pekerjaan dalam ruang kerja.

    Nilai Wilayah (klik untuk membuka)

    Wilayah

    Nilai

    China (Beijing)

    Beijing

    China (Shanghai)

    Shanghai

    China (Hangzhou)

    Hangzhou

    China (Shenzhen)

    Shenzhen

    China (Zhangjiakou)

    Zhangjiakou

    China (Hong Kong)

    Hong Kong

    Singapore

    Singapore

    Jerman (Frankfurt)

    Frankfurt

    Indonesia (Jakarta)

    Jakarta

    Malaysia (Kuala Lumpur)

    Kuala Lumpur

    AS (Silicon Valley)

    us-west-1

    China East 2 Finance

    China East 2 Finance

  3. Kode berikut memberikan contoh hasil.

    dwd_xxx nx not a running job, skip
    dwd_st xxx not a running job, skip
    dwd_xxx a not a running job, skip
    dia xxx not a hologres job, skip
    dwd_tr xxx ail not sql job, skip
    --- The following are Hologres binlog source tables that are on a version earlier than 8.0.5 and do not have sdkmode = jdbc set ---
    deploymentName                         version                              tableName
    ads_xxx                   xxx vvr-6.0.7-flink-1.15 adsdb.ads_xxx              xxx         xxx catalog
           xxx      vvr-8.0.1-flink-1.17 odsdb.ods_xxx      nts
    xxx           vvr-8.0.1-flink-1.17 dwsdb.dws_xxx             tag
    xxx       s vvr-8.0.1-flink-1.17 odsdb.ods_xxx        ers