Topik ini menjelaskan cara menggunakan Realtime Compute for Apache Flink atau Blink untuk mengonsumsi log biner Hologres secara real-time.
Catatan penggunaan
Perhatikan hal berikut sebelum mengonsumsi log biner Hologres:
Hologres V0.9 dan versi lebih tinggi memungkinkan Anda mengonsumsi log biner. Hologres V1.3.21 dan versi lebih tinggi mendukung konfigurasi daftar putih mesin. Jika Anda mengonfigurasi daftar putih mesin pada instance dengan versi lebih lama dari V1.3.21, log biner instance tersebut tidak dapat dikonsumsi. Jika versi instance Hologres Anda lebih lama dari V1.3.21, Anda dapat bergabung dengan grup DingTalk Hologres untuk mendapatkan dukungan teknis. Untuk informasi lebih lanjut, lihat Dapatkan Dukungan Online untuk Hologres.
Hologres memungkinkan Anda mengonsumsi log biner pada level tabel. Baik tabel berorientasi baris maupun kolom didukung. Jika versi instance Hologres Anda adalah V1.1 atau lebih tinggi, Anda juga dapat mengonsumsi log biner tabel yang menggunakan mode penyimpanan hibrid baris-kolom. Setelah mengaktifkan fitur pencatatan biner, tabel berorientasi kolom memiliki overhead yang lebih besar dibandingkan tabel berorientasi baris secara teori. Oleh karena itu, kami menyarankan Anda mengaktifkan fitur pencatatan biner untuk tabel berorientasi baris jika data sering diperbarui.
Untuk informasi lebih lanjut tentang dukungan fitur pencatatan biner serta cara mengaktifkan dan mengonfigurasinya, lihat Berlangganan Log Biner Hologres.
Hanya Alibaba Cloud Realtime Compute for Apache Flink yang memungkinkan Anda mengonsumsi log biner Hologres. Jika Anda menggunakan Realtime Compute for Apache Flink untuk mengonsumsi log biner Hologres dalam mode HoloHub, hanya tipe data sederhana yang didukung. Pada Realtime Compute for Apache Flink yang menggunakan Ververica Runtime (VVR) 6.0.3 dan versi lebih tinggi, log biner Hologres dapat dikonsumsi dalam mode Java Database Connectivity (JDBC). Dibandingkan dengan mode HoloHub, mode JDBC mendukung lebih banyak tipe data. Untuk informasi lebih lanjut tentang pemetaan tipe data, lihat bagian "Pemetaan Tipe Data antara Realtime Compute for Apache Flink atau Blink dan Hologres" di Tipe Data. Untuk informasi lebih lanjut tentang izin yang diperlukan untuk mode JDBC dan mode HoloHub, lihat Izin dalam topik ini.
Anda tidak dapat mengonsumsi log biner tabel partisi induk.
Pada Hologres V2.0 dan versi minor setelah V2.0, mode HoloHub didukung ketika kondisi tertentu terpenuhi. Pada Hologres V2.1 dan versi lebih tinggi, mode HoloHub tidak lagi didukung. Hanya mode JDBC yang didukung. Sebelum meningkatkan instance Hologres Anda, periksa penyebaran Realtime Compute for Apache Flink yang menggunakan mode HoloHub dan tingkatkan versi VVR dari penyebaran tersebut. Untuk informasi lebih lanjut, lihat Ubah Mode HoloHub ke Mode JDBC dalam topik ini.
Izin
Jika Anda menggunakan Realtime Compute for Apache Flink untuk mengonsumsi log biner Hologres dalam mode JDBC, Anda dapat menggunakan akun Hologres kustom. Jika Anda menggunakan Realtime Compute for Apache Flink untuk mengonsumsi log biner Hologres dalam mode HoloHub, akun Hologres kustom tidak didukung.
Jika Anda menggunakan Realtime Compute for Apache Flink untuk mengonsumsi log biner Hologres dalam mode HoloHub, Anda harus diberikan izin baca dan tulis pada tabel log biner.
Pastikan kondisi berikut terpenuhi sebelum menggunakan Realtime Compute for Apache Flink untuk mengonsumsi log biner Hologres dalam mode JDBC. Untuk informasi lebih lanjut, lihat Gunakan JDBC untuk Mengonsumsi Log Biner Hologres.
Ekstensi
hg_binlogtelah dibuat. Ekstensi ini dibuat secara default pada Hologres V2.0 dan versi lebih tinggi.Akun yang Anda gunakan ditetapkan sebagai superuser dari instance Hologres yang diinginkan, atau memiliki izin pemilik tabel yang diinginkan dan izin peran replikasi dari instance tersebut.
Gunakan Realtime Compute for Apache Flink untuk mengonsumsi log binari secara real-time
Realtime Compute for Apache Flink VVP 2.4 dan versi lebih tinggi memungkinkan Anda menggunakan konektor Hologres untuk mengonsumsi log biner secara real-time. Bagian ini menjelaskan prosedurnya.
DDL tabel sumber dalam mode non-CDC
Dalam mode ini, log biner yang dikonsumsi dalam tabel sumber ditransfer ke node hilir sebagai data reguler Realtime Compute for Apache Flink. Jenis perubahan semua data adalah INSERT. Anda dapat memproses data jenis yang ditentukan oleh bidang hg_binlog_event_type sesuai kebutuhan bisnis Anda. Setelah fitur pencatatan biner diaktifkan untuk tabel Hologres, Anda dapat mengeksekusi pernyataan DDL berikut untuk membuat tabel sumber guna mengonsumsi log biner dalam mode non-change data capture (CDC) di Realtime Compute for Apache Flink:
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 bidang yang diawali dengan
binlogadalah bidang sistem. Anda tidak dapat mengubah nama atau tipe data dari bidang-bidang ini.Bidang lainnya sesuai dengan bidang pengguna dan harus semuanya huruf kecil.
DDL tabel sumber dalam mode CDC
Dalam mode ini, setiap baris data log biner yang dikonsumsi dalam tabel sumber secara otomatis diberikan tipe Flink RowKind yang akurat, seperti INSERT, DELETE, UPDATE_BEFORE, atau UPDATE_AFTER, berdasarkan tipe yang ditentukan oleh bidang hg_binlog_event_type. Dengan cara ini, log biner dapat dicerminkan ke tabel sumber. Ini mirip dengan fitur CDC di MySQL dan PostgreSQL.
Anda tidak dapat mendefinisikan watermark untuk tabel sumber CDC Hologres yang dibuat untuk log biner. Jika Anda ingin melakukan agregasi jendela pada tabel sumber tersebut, Anda dapat menggunakan metode berbeda untuk melakukan agregasi. Untuk informasi lebih lanjut, lihat Tabel Sumber CDC MySQL dan Tabel Sumber CDC Hologres Tidak Mendukung Fungsi Jendela. Bagaimana Cara Mengimplementasikan Agregasi Data Tingkat Menit pada Tabel Sumber CDC MySQL atau Tabel Sumber CDC Hologres?
Setelah fitur pencatatan biner diaktifkan untuk tabel Hologres, Anda dapat mengeksekusi pernyataan DDL berikut untuk mengonsumsi log biner dalam tabel sumber CDC secara real-time di Realtime Compute for Apache Flink:
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 saat ini.
'password'='<yourAccessSecret>',// Rahasia AccessKey akun saat ini.
'endpoint'='<yourEndpoint>',// Titik akhir VPC instance Hologres Anda.
'binlog' = 'true',
'cdcMode' = 'true',
'binlogMaxRetryTimes' = '10',
'binlogRetryIntervalMs' = '500',
'binlogBatchReadSize' = '100'
);Tabel sumber di mana data penuh dan inkremental dikonsumsi
Realtime Compute for Apache Flink dengan versi engine vvr-4.0.13-flink-1.13 dan instance Hologres V0.10 dan versi lebih tinggi mendukung konsumsi data penuh dan inkremental dalam tabel sumber dalam mode CDC. Ketika log biner dikonsumsi menggunakan metode ini, semua data dalam database pertama kali dibaca dan kemudian log biner inkremental dibaca. Untuk informasi lebih lanjut, lihat Konektor Hologres.
Tabel sumber log binari dalam mode JDBC
Pada Realtime Compute for Apache Flink yang menggunakan VVR 6.0.3 atau versi lebih tinggi, log biner Hologres dapat dikonsumsi dalam mode JDBC. Dibandingkan dengan mode HoloHub, mode JDBC mendukung akun kustom dan lebih banyak tipe data. Untuk informasi lebih lanjut, lihat Konektor Hologres.
Ubah mode HoloHub ke mode JDBC
Pada Hologres V2.0 dan versi lebih tinggi, mode HoloHub tidak didukung. Jika Anda ingin meningkatkan instance Hologres Anda, Anda harus mengubah mode HoloHub ke mode JDBC untuk penyebaran Realtime Compute for Apache Flink.
Tingkatkan instance Hologres ke V2.1
Sebelum meningkatkan instance Hologres Anda ke V2.1, gunakan salah satu solusi berikut untuk memeriksa penyebaran Realtime Compute for Apache Flink dan instance Hologres Anda serta memastikan bahwa penyebaran Realtime Compute for Apache Flink dapat berjalan seperti yang diharapkan.
Solusi 1: Direkomendasikan. Tingkatkan versi VVR Realtime Compute for Apache Flink ke 8.0.7 atau versi lebih tinggi, dan kemudian tingkatkan instance Hologres Anda. Dalam hal ini, Realtime Compute for Apache Flink secara otomatis mengubah mode HoloHub ke mode JDBC.
Solusi 2: Tingkatkan versi VVR Realtime Compute for Apache Flink ke versi yang berkisar antara 6.0.7 hingga 8.0.5, tambahkan konfigurasi
'sdkMode'='jdbc'untuk tabel sumber Realtime Compute for Apache Flink, dan kemudian mulai ulang penyebaran. Berikan satu set izin berikut kepada akun pengguna yang digunakan untuk masuk ke instance Hologres. Setelah memastikan bahwa penyebaran berjalan dengan baik, tingkatkan instance Hologres Anda.Izin superuser pada instance Hologres
Izin pemilik tabel, izin CREATE DATABASE, dan izin peran replikasi dari instance Hologres
Solusi 3: Tidak direkomendasikan. Tingkatkan versi VVR Realtime Compute for Apache Flink ke 8.0.6, dan kemudian tingkatkan instance Hologres Anda. Dalam hal ini, Realtime Compute for Apache Flink secara otomatis mengubah mode HoloHub ke mode JDBC. Realtime Compute for Apache Flink yang menggunakan VVR 8.0.6 memiliki cacat yang diketahui. Jika tabel dimensi berisi jumlah bidang yang berlebihan, draft Realtime Compute for Apache Flink berbasis VVR gagal diterapkan karena timeout. Untuk informasi lebih lanjut, lihat bagian "Catatan Rilis Konektor Hologres" di Ikhtisar.
Opsional. Jika Anda memiliki sejumlah besar penyebaran Realtime Compute for Apache Flink berbasis VVR, Anda dapat memperoleh informasi tentang penyebaran dan tabel dengan merujuk ke bagian berikut.
Tingkatkan instance Hologres ke V2.0
Solusi 1: Direkomendasikan. Tingkatkan versi VVR Realtime Compute for Apache Flink ke 8.0.6 atau versi lebih tinggi, dan kemudian tingkatkan instance Hologres Anda. Dalam hal ini, Realtime Compute for Apache Flink secara otomatis mengubah mode HoloHub ke mode JDBC. Realtime Compute for Apache Flink yang menggunakan VVR 8.0.6 memiliki cacat yang diketahui. Jika tabel dimensi berisi jumlah bidang yang berlebihan, draft Realtime Compute for Apache Flink berbasis VVR gagal diterapkan karena timeout. Untuk informasi lebih lanjut, lihat bagian "Catatan Rilis Konektor Hologres" di Ikhtisar. Kami merekomendasikan Anda untuk meningkatkan versi VVR Realtime Compute for Apache Flink ke 8.0.7.
Solusi 2: Tingkatkan versi VVR Realtime Compute for Apache Flink ke 8.0.4 atau 8.0.5, dan mulai ulang penyebaran. Berikan satu set izin berikut kepada akun pengguna yang digunakan untuk masuk ke instance Hologres. Setelah memastikan bahwa penyebaran berjalan dengan baik, tingkatkan instance Hologres Anda.
Izin superuser pada instance Hologres
Izin pemilik tabel, izin CREATE DATABASE, dan izin peran replikasi dari instance Hologres
Solusi 3: Tingkatkan versi VVR Realtime Compute for Apache Flink ke versi yang berkisar antara 6.0.7 hingga 8.0.3, dan kemudian tingkatkan instance Hologres Anda. Dalam hal ini, Realtime Compute for Apache Flink masih menggunakan mode HoloHub untuk mengonsumsi log biner.
Jika Anda memiliki sejumlah besar penyebaran Realtime Compute for Apache Flink berbasis VVR, Anda dapat memperoleh informasi tentang penyebaran dan tabel dengan melakukan langkah-langkah berikut:
Hanya informasi penyebaran berikut yang dapat diperoleh:
Penyebaran SQL di mana tabel dibuat menggunakan pernyataan bahasa definisi data (DDL).
Penyebaran Katalog di mana parameter ditentukan menggunakan petunjuk.
Informasi tentang penyebaran JAR dan informasi tentang tabel katalog yang tidak berisi parameter petunjuk tidak dapat diperoleh.
Unduh find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar.
Gunakan alat baris perintah lokal untuk masuk ke direktori alat open source dan jalankan perintah berikut untuk melihat informasi tentang penyebaran dan tabel.
CatatanUntuk menjalankan perintah berikut, Anda harus menginstal lingkungan Java dan menggunakan JDK 8 atau versi lebih tinggi.
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 binlogTabel berikut menjelaskan parameter dalam sintaks sebelumnya.
Parameter
Deskripsi
region
Wilayah tempat ruang kerja Realtime Compute for Apache Flink berada. Untuk informasi lebih lanjut tentang nilai-nilai untuk wilayah berbeda, lihat Nilai wilayah dalam topik ini.
url
URL penyebaran dalam ruang kerja Realtime Compute for Apache Flink.
AccessKeyID
ID AccessKey akun yang digunakan untuk mengakses ruang kerja Realtime Compute for Apache Flink.
AccessKeySecret
Rahasia AccessKey akun yang digunakan untuk mengakses ruang kerja Realtime Compute for Apache Flink.
binlog/rpc
Konten yang akan diperiksa dalam penyebaran Realtime Compute for Apache Flink. Nilai valid:
binlog: Sistem memeriksa tabel sumber yang mengonsumsi log binari Hologres di semua penyebaran dalam ruang kerja Realtime Compute for Apache Flink.rpc: Sistem memeriksa tabel dimensi dan tabel hasil dalam moderpcdi semua penyebaran dalam ruang kerja Realtime Compute for Apache Flink.
Lihat hasil yang dikembalikan, seperti yang ditunjukkan pada gambar berikut:
