Topik ini menjelaskan cara menggunakan Flink dan Blink untuk mengonsumsi log biner Hologres secara real-time.
Perhatian
Perhatikan hal-hal berikut saat mengonsumsi log biner Hologres:
Anda hanya dapat mengonsumsi log biner di Hologres V0.9 ke atas. Konfigurasi daftar putih engine hanya didukung mulai Hologres V1.3.21 karena versi sebelumnya tidak mendukung fitur ini. Jika Anda mengaktifkan daftar putih pada versi yang tidak didukung, konsumsi log biner akan gagal. Jika versi instans Anda lebih lama dari versi yang disyaratkan, bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi selengkapnya, lihat Dukungan online.
Hologres mendukung fitur binary logging di tingkat tabel baik untuk tabel berorientasi baris maupun tabel berorientasi kolom. Mulai dari Hologres V1.1, tabel penyimpanan hibrida baris-kolom juga didukung. Setelah Anda mengaktifkan binary logging, tabel berorientasi kolom memiliki overhead teoretis yang lebih tinggi dibandingkan tabel berorientasi baris. Oleh karena itu, untuk skenario yang melibatkan pembaruan data secara sering, kami menyarankan agar Anda mengaktifkan binary logging untuk tabel berorientasi baris.
Untuk informasi selengkapnya tentang dukungan binary logging serta cara mengaktifkan dan mengonfigurasinya, lihat Berlangganan log biner Hologres.
Hanya Realtime Compute for Apache Flink yang mendukung pengonsumsian log biner Hologres. Dalam mode Holohub, Flink hanya mendukung pengonsumsian tipe data simple dari log biner Hologres. Mulai dari Flink 6.0.3, Anda dapat mengonsumsi log biner Hologres dalam mode Java Database Connectivity (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 juga memiliki persyaratan izin tambahan. Untuk informasi selengkapnya, lihat Izin.
Anda tidak dapat mengonsumsi log biner dari tabel partisi induk.
Hologres V2.0 ke atas menyediakan dukungan terbatas untuk mode Holohub. Mulai dari Hologres V2.1, mode Holohub telah ditinggalkan dan sepenuhnya digantikan oleh mode JDBC. Sebelum melakukan peningkatan versi Hologres Anda, periksa tugas Flink yang menggunakan mode Holohub, lakukan upgrade versi pekerjaan Flink Ververica Runtime (VVR), lalu lakukan peningkatan instans Hologres. Untuk informasi selengkapnya, lihat Beralih dari mode Holohub ke mode JDBC.
Izin
Flink mendukung akun Hologres kustom saat mengonsumsi log biner dalam mode JDBC, tetapi tidak dalam mode Holohub.
Untuk mengonsumsi log biner Hologres dalam mode Holohub menggunakan Flink, Anda memerlukan izin baca dan tulis pada tabel tersebut.
Pengonsumsian log biner Hologres dalam mode JDBC menggunakan Flink memiliki prasyarat berikut. Untuk informasi selengkapnya, lihat Mengonsumsi log biner Hologres menggunakan JDBC.
Ekstensi
hg_binlogtelah dibuat. Ekstensi ini dibuat secara default di Hologres V2.0 ke atas.Pengguna harus merupakan superuser instans atau memiliki izin Owner pada tabel target serta izin Replication Role untuk instans tersebut.
Gunakan Flink untuk mengonsumsi log biner secara real-time
VVP 2.4 ke atas mendukung konsumsi log biner secara real-time menggunakan konektor Hologres. Bagian berikut menjelaskan cara menggunakannya.
DDL tabel sumber (mode non-CDC)
Dalam mode ini, data log biner yang dikonsumsi oleh sumber diteruskan ke node turunan sebagai data Flink biasa. Semua data bertipe Insert. Anda dapat memilih cara memproses data berdasarkan tipe tertentu hg_binlog_event_type sesuai kebutuhan bisnis Anda. Setelah Anda mengaktifkan binary logging untuk tabel Hologres, gunakan DDL berikut untuk tabel sumber (mode non-CDC) di Flink guna mengonsumsi log biner 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
binlogxxxmerupakan bidang sistem log biner. Nama dan tipenya bersifat tetap dan tidak dapat diubah.Bidang lainnya bersesuaian dengan bidang pengguna dan harus ditulis dalam huruf kecil.
DDL tabel sumber (mode CDC)
Dalam mode ini, tipe Flink RowKind yang akurat—seperti INSERT, DELETE, UPDATE_BEFORE, atau UPDATE_AFTER—secara otomatis ditetapkan untuk setiap baris data log biner berdasarkan hg_binlog_event_type. Hal ini memungkinkan Anda mencerminkan data tabel, yang mirip dengan fitur change data capture (CDC) pada MySQL dan PostgreSQL.
Tabel sumber log biner Hologres (mode CDC) tidak mendukung definisi watermark. Untuk melakukan agregasi jendela, Anda dapat menggunakan metode agregasi non-jendela. Untuk informasi selengkapnya, lihat Tabel sumber CDC MySQL/Hologres tidak mendukung fungsi jendela. Bagaimana cara menerapkan statistik agregasi tingkat menit?.
Setelah Anda mengaktifkan binary logging untuk tabel Hologres, gunakan DDL berikut untuk tabel sumber (mode CDC) di Flink guna mengonsumsi log biner secara real-time.
create table test_message_src_binlog_table(
id INTEGER,
title VARCHAR,
body VARCHAR
) with (
'connector'='hologres',
'dbname'='<yourDbname>',// Nama database Hologres.
'tablename'='<yourTablename>',// Nama tabel Hologres.
'username'='<yourAccessID>',// ID AccessKey akun Anda.
'password'='<yourAccessSecret>',// Rahasia AccessKey akun Anda.
'endpoint'='<yourEndpoint>',// Titik akhir VPC instans Hologres Anda.
'binlog' = 'true',
'cdcMode' = 'true',
'binlogMaxRetryTimes' = '10',
'binlogRetryIntervalMs' = '500',
'binlogBatchReadSize' = '100'
);Tabel sumber untuk data penuh dan inkremental
Mulai dari engine VVR 1.13-vvr-4.0.13 dan Hologres V0.10, tabel sumber CDC log biner Hologres mendukung konsumsi data penuh dan inkremental. Metode ini pertama-tama membaca data penuh historis dari database, lalu beralih dengan lancar untuk membaca data inkremental dari log biner. Untuk informasi selengkapnya, lihat Hologres.
Tabel sumber log biner dalam mode JDBC
Mulai dari Flink 6.0.3, Anda dapat mengonsumsi log biner Hologres dalam mode JDBC. Dibandingkan dengan mode Holohub, mode JDBC mendukung lebih banyak tipe data dan akun khusus. Untuk informasi selengkapnya, lihat Hologres.
Beralih dari mode Holohub ke mode JDBC
Hologres secara bertahap telah menghentikan mode Holohub sejak V2.0. Untuk melakukan peningkatan versi Hologres Anda, Anda harus mengalihkan pekerjaan Anda dari mode Holohub ke mode JDBC. Ikuti petunjuk berikut.
Lakukan peningkatan instans Hologres ke V2.1
Sebelum menaikkan versi instans Hologres Anda ke V2.1, pilih salah satu solusi berikut untuk memeriksa tugas Flink dan instans Hologres guna memastikan tugas Flink berjalan dengan baik.
(Solusi 1) (Direkomendasikan) Lakukan peningkatan versi Flink VVR ke 8.0.7 atau lebih baru. Flink secara otomatis beralih dari mode Holohub ke mode JDBC.
(Solusi 2) Lakukan peningkatan versi Flink VVR ke versi antara 6.0.7 hingga 8.0.5. Tambahkan parameter
'sdkMode'='jdbc'ke tabel sumber dan restart pekerjaan. Anda juga harus memberikan pengguna salah satu dari kumpulan izin berikut. Setelah memastikan pekerjaan berjalan dengan baik, lakukan peningkatan instans Hologres.(Opsi 1) Izin superuser pada instans.
(Opsi 2) Izin Owner pada tabel target, izin CREATE DATABASE, dan izin Replication Role untuk instans.
(Solusi 3) (Tidak direkomendasikan) Lakukan peningkatan versi Flink VVR ke 8.0.6. Flink secara otomatis beralih dari mode Holohub ke mode JDBC. Namun, VVR 8.0.6 memiliki bug yang diketahui. Jika tabel dimensi memiliki terlalu banyak bidang, pekerjaan VVR mungkin timeout selama penerapan. Untuk informasi selengkapnya, lihat Catatan Rilis Konektor Hologres.
(Opsional) Jika Anda memiliki banyak pekerjaan Flink VVR, lihat konten berikut untuk mendapatkan informasi tentang pekerjaan dan tabel yang perlu ditingkatkan.
Lakukan peningkatan instans Hologres ke V2.0
(Solusi 1) (Direkomendasikan) Lakukan peningkatan versi Flink VVR ke 8.0.6 atau lebih baru. Flink secara otomatis beralih dari mode Holohub ke mode JDBC. VVR 8.0.6 memiliki bug yang diketahui. Jika tabel dimensi memiliki terlalu banyak bidang, pekerjaan VVR mungkin timeout selama penerapan. Untuk informasi selengkapnya, lihat Catatan Rilis Konektor Hologres. Kami menyarankan Anda memilih VVR 8.0.7.
(Solusi 2) Lakukan peningkatan versi Flink VVR ke 8.0.4 atau 8.0.5 dan restart pekerjaan Flink. Anda juga harus memberikan pengguna salah satu dari kumpulan izin berikut. Setelah memastikan pekerjaan berjalan dengan baik, lakukan peningkatan instans Hologres.
(Opsi 1) Izin superuser pada instans.
(Opsi 2) Izin Owner pada tabel target, izin CREATE DATABASE, dan izin Replication Role untuk instans.
(Solusi 3) Lakukan peningkatan versi Flink VVR ke versi antara 6.0.7 hingga 8.0.3. Flink akan terus menggunakan mode Holohub untuk mengonsumsi log biner.
Jika Anda memiliki terlalu banyak pekerjaan Flink VVR yang mengonsumsi log biner Hologres, gunakan metode berikut untuk mendapatkan informasi tentang pekerjaan dan tabel yang perlu ditingkatkan.
Tool ini hanya mendukung pengambilan informasi untuk jenis pekerjaan berikut:
Pekerjaan SQL yang menggunakan pernyataan 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.
Unduh tool open source find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar.
Gunakan command line untuk masuk ke direktori tool open source tersebut. Lalu, jalankan perintah berikut untuk melihat semua pekerjaan dan tabel yang memerlukan peningkatan.
CatatanUntuk menjalankan perintah berikut, Anda harus memiliki lingkungan Java dengan JDK 8 atau lebih baru yang terinstal.
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/zh/#/workspaces/xxxx/namespaces/xxxx/operations/stream/xxxx my-access-key-id my-access-key-secret binlogBerikut ini penjelasan parameter-parameter tersebut.
Parameter
Deskripsi
region
Nilai wilayah tempat proyek Realtime Compute for Apache Flink target berada. Untuk nilai-nilainya, lihat Tabel pemetaan nilai wilayah.
url
URL dari pekerjaan apa pun dalam proyek Realtime Compute for Apache Flink target.
AccessKeyID
ID AccessKey dari akun yang dapat mengakses proyek Realtime Compute for Apache Flink.
AccessKeySecret
Rahasia AccessKey dari akun yang dapat mengakses proyek Realtime Compute for Apache Flink.
binlog/rpc
Konten yang akan diperiksa dalam pekerjaan. Nilai yang valid:
binlog: Memeriksa tabel sumber log biner Hologres dari semua pekerjaan dalam proyek.rpc: Memeriksa tabel dimensi atau tabel sink yang menggunakan moderpcdalam semua pekerjaan dalam proyek.
Berikut ini contoh hasilnya.
