All Products
Search
Document Center

Realtime Compute for Apache Flink:Konektor YAML Hologres untuk ingesti data

Last Updated:Apr 29, 2026

Topik ini menjelaskan cara menggunakan konektor Hologres untuk menyinkronkan data dalam penerapan ingesti data berbasis YAML.

Latar Belakang

Hologres adalah mesin gudang data real-time yang mendukung penulisan, pembaruan, dan analitik secara real-time dalam skala besar. Hologres kompatibel dengan protokol PostgreSQL dan mendukung SQL standar. Hologres mendukung pemrosesan analitik online (OLAP) serta kueri ad hoc pada data berskala petabyte, sekaligus menyajikan data dengan konkurensi tinggi dan latensi rendah. Hologres terintegrasi dengan MaxCompute, Realtime Compute for Apache Flink, dan DataWorks untuk menyediakan solusi gudang data online dan offline yang lengkap. Tabel berikut menjelaskan kemampuan konektor YAML Hologres.

Item

Deskripsi

Tipe tabel

Sink

Mode berjalan

Mode streaming dan batch

Format data

N/A

Metriks

  • numRecordsOut

  • numRecordsOutPerSecond

Catatan

Untuk informasi selengkapnya, lihat Metrik.

Tipe API

YAML

Pembaruan atau penghapusan di tabel sink

Didukung

Fitur

Fitur

Deskripsi

Sinkronisasi database penuh

Menyinkronkan data penuh dan inkremental secara real-time dari seluruh database atau beberapa tabel ke tabel sink yang sesuai.

Sinkronisasi perubahan skema

Menyinkronkan perubahan skema (seperti penambahan, penghapusan, atau penggantian nama kolom) dari tabel sumber ke tabel sink yang sesuai secara real-time.

Sinkronisasi database dan tabel terbagi (sharded)

Gunakan ekspresi reguler untuk mencocokkan tabel sumber di beberapa database sharded berdasarkan nama. Data dari tabel-tabel tersebut kemudian digabung dan disinkronkan ke tabel sink hilir yang sesuai namanya.

Penulisan ke tabel partisi

Menulis data dari tabel hulu ke tabel partisi Hologres.

Pemetaan tipe data

Memetakan tipe data hulu ke tipe data Hologres yang lebih luas menggunakan beberapa strategi.

Sintaksis

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}

Parameter

Parameter

Deskripsi

Jenis

Wajib

Bawaan

Keterangan

type

Tipe sink.

String

Ya

None

Nilainya harus hologres.

name

Nama sink.

String

Tidak

None

N/A.

dbname

Nama database.

String

Ya

None

N/A.

username

Username untuk akses database. Gunakan ID AccessKey Akun Alibaba Cloud Anda.

String

Ya

None

Untuk informasi lebih lanjut, lihat Bagaimana cara melihat ID AccessKey dan Rahasia AccessKey?

Penting

Untuk menghindari eksposur AccessKey Anda, tentukan nilainya menggunakan variabel. Untuk informasi lebih lanjut, lihat Variabel proyek.

password

Password untuk akses database. Gunakan Rahasia AccessKey Akun Alibaba Cloud Anda.

String

Ya

None

endpoint

Titik akhir layanan Hologres.

String

Ya

None

Untuk informasi lebih lanjut, lihat Titik akhir akses.

jdbcRetryCount

Jumlah percobaan ulang untuk operasi tulis dan kueri saat koneksi gagal.

Integer

Tidak

10

N/A.

jdbcRetrySleepInitMs

Waktu tunggu tetap untuk setiap upaya percobaan ulang.

Long

Tidak

1000

Unit: milidetik. Waktu tunggu aktual untuk percobaan ulang dihitung menggunakan rumus berikut: jdbcRetrySleepInitMs + retry * jdbcRetrySleepStepMs.

jdbcRetrySleepStepMs

Waktu tunggu tambahan untuk setiap upaya percobaan ulang.

Long

Tidak

5000

Unit: milidetik. Waktu tunggu aktual untuk percobaan ulang dihitung menggunakan rumus berikut: jdbcRetrySleepInitMs + retry * jdbcRetrySleepStepMs.

jdbcConnectionMaxIdleMs

Waktu idle maksimum untuk koneksi JDBC.

Long

Tidak

60000

Unit: milidetik. Jika koneksi tidak aktif lebih lama dari durasi ini, koneksi akan diputus dan dilepas.

jdbcMetaCacheTTL

Waktu kedaluwarsa untuk informasi TableSchema yang di-cache secara lokal.

Long

Tidak

60000

Unit: milidetik.

jdbcMetaAutoRefreshFactor

Faktor yang menentukan pemicu penyegaran cache. Sistem secara otomatis menyegarkan cache jika sisa masa berlakunya kurang dari waktu pemicu.

Integer

Tidak

4

Sisa masa berlaku cache dihitung sebagai berikut: Sisa masa berlaku cache = Waktu kedaluwarsa cache - Waktu cache telah aktif. Setelah penyegaran otomatis, waktu aktif cache diatur ulang menjadi 0.

Waktu pemicu dihitung menggunakan rumus: jdbcMetaCacheTTL / jdbcMetaAutoRefreshFactor.

mutatetype

Mode penulisan data.

String

Tidak

INSERT_OR_UPDATE

Jika kunci primer ditetapkan untuk tabel fisik Hologres, sink Hologres memastikan semantik tepat-sekali berdasarkan kunci primer tersebut. Jika data dengan kunci primer duplikat tiba, parameter mutatetype menentukan bagaimana tabel sink diperbarui. Parameter mutatetype mendukung nilai-nilai berikut:

  • INSERT_OR_IGNORE: Mempertahankan data pertama yang muncul dan mengabaikan semua data berikutnya.

  • INSERT_OR_REPLACE: Data baru menggantikan seluruh baris yang ada.

  • INSERT_OR_UPDATE: Memperbarui subset kolom untuk baris yang sudah ada. Misalnya, sebuah tabel memiliki empat kolom: a, b, c, dan d, dan a adalah Primary Key (PK). Jika Anda menulis data hanya untuk kolom a dan b ke Hologres dan baris dengan PK yang sama sudah ada, sistem hanya memperbarui kolom b. Kolom c dan d tetap tidak berubah.

createparttable

Menentukan apakah akan secara otomatis membuat partisi yang belum ada saat menulis ke tabel partisi.

Boolean

Tidak

false

N/A.

sink.delete-strategy

Menentukan cara memproses pesan retraction.

String

Tidak

None

Nilai yang valid:

  • IGNORE_DELETE: Mengabaikan pesan Update Before dan Delete. Nilai ini cocok untuk skenario di mana Anda hanya perlu memasukkan atau memperbarui data, tetapi tidak menghapusnya.

  • DELETE_ROW_ON_PK: Framework Flink menerapkan operasi penghapusan berdasarkan kunci primer. Untuk operasi pembaruan, framework terlebih dahulu menghapus data lama lalu memasukkan data baru untuk memastikan akurasi data.

jdbcWriteBatchSize

Dalam mode JDBC, jumlah maksimum catatan yang dibuffer di sink Hologres sebelum penulisan batch.

Integer

Tidak

256

Unit: baris.

Catatan

Parameter jdbcWriteBatchSize, jdbcWriteBatchByteSize, dan jdbcWriteFlushInterval memiliki hubungan OR. Jika Anda mengatur ketiga parameter tersebut, data hasil akan ditulis segera setelah salah satu kondisi terpenuhi.

jdbcWriteBatchByteSize

Dalam mode JDBC, parameter ini menentukan ukuran maksimum data dalam byte yang dibuffer oleh sink Hologres sebelum menulis batch ke tujuan.

Long

Tidak

2.097.152 byte (2 MB)

Catatan

Parameter jdbcWriteBatchSize, jdbcWriteBatchByteSize, dan jdbcWriteFlushInterval memiliki hubungan OR. Jika Anda mengatur ketiga parameter tersebut, data hasil akan ditulis segera setelah salah satu kondisi terpenuhi.

jdbcWriteFlushInterval

Dalam mode JDBC, parameter ini menentukan waktu maksimum yang ditunggu oleh sink Hologres sebelum menulis data yang dibuffer ke Hologres.

Long

Tidak

10000

Unit: milidetik.

Catatan

Parameter jdbcWriteBatchSize, jdbcWriteBatchByteSize, dan jdbcWriteFlushInterval memiliki hubungan OR. Jika Anda mengatur ketiga parameter tersebut, data hasil akan ditulis segera setelah kondisi salah satu di antaranya terpenuhi.

ignoreNullWhenUpdate

Menentukan apakah akan mengabaikan nilai null dalam data masuk saat mutatetype diatur ke INSERT_OR_UPDATE.

Boolean

Tidak

false

Nilai yang valid:

  • false (bawaan): Menulis nilai null ke tabel sink Hologres.

  • true: Mengabaikan nilai null dalam data masuk.

jdbcEnableDefaultForNotNullColumn

Menentukan apakah akan memasukkan nilai bawaan saat nilai null ditulis ke kolom NOT NULL yang tidak memiliki nilai bawaan yang ditentukan.

Boolean

Tidak

true

Nilai yang valid:

  • true (bawaan): Mengizinkan konektor memasukkan nilai bawaan. Aturannya sebagai berikut:

    • Untuk kolom bertipe String, string kosong ("") ditulis.

    • Untuk kolom bertipe Number, angka 0 ditulis.

    • Untuk kolom bertipe Date, timestamp, atau timestamptz, 1970-01-01 00:00:00 ditulis.

  • false: Tidak memasukkan nilai bawaan. Pengecualian dilempar saat nilai null ditulis ke kolom NOT NULL.

remove-u0000-in-text.enabled

Menentukan apakah akan menghapus karakter null (\u0000) dari string sebelum menulis.

Boolean

Tidak

false

Nilai yang valid:

  • false (bawaan): Konektor tidak memproses data. Namun, jika data kotor ditemukan, operasi tulis dapat melempar pengecualian berikut: ERROR: invalid byte sequence for encoding "UTF8": 0x00

    Dalam kasus ini, Anda harus memproses data kotor di tabel sumber atau menentukan logika penanganan data dalam pernyataan SQL Anda.

  • true: Konektor menghapus karakter \u0000 dari string untuk mencegah pengecualian saat menulis.

deduplication.enabled

Menentukan apakah akan melakukan deduplikasi dalam setiap batch sebelum menulis dalam mode jdbc dan jdbc_fixed.

Boolean

Tidak

true

Nilai yang valid:

  • true (bawaan): Mengaktifkan deduplikasi dalam batch. Jika beberapa catatan memiliki kunci primer yang sama, hanya catatan terakhir yang dipertahankan. Misalnya, pertimbangkan data dengan dua bidang, di mana bidang pertama adalah kunci primer:

    • Catatan INSERT (1,'a') dan INSERT (1,'b') tiba secara berurutan. Setelah deduplikasi, hanya catatan terakhir (1,'b') yang ditulis ke tabel sink Hologres.

    • Tabel sink Hologres sudah berisi catatan (1,'a'). Jika catatan DELETE (1,'a') dan INSERT (1,'b') tiba secara berurutan, hanya catatan terakhir (1,'b') yang ditulis ke Hologres. Ini dianggap sebagai pembaruan langsung, bukan penghapusan diikuti dengan penyisipan.

  • false: Tidak dilakukan deduplikasi selama batching. Jika catatan baru memiliki kunci primer yang sama dengan catatan yang sudah ada dalam batch saat ini, batch saat ini ditulis terlebih dahulu. Setelah penulisan selesai, catatan baru kemudian diproses.

sink.type-normalize-strategy

Strategi pemetaan tipe data.

String

Tidak

STANDARD

Strategi yang digunakan sink Hologres untuk mengonversi tipe data hulu ke tipe Hologres.

  • STANDARD: Mengonversi tipe Flink CDC ke tipe PostgreSQL (PG) standar.

  • BROADEN: Mengonversi tipe Flink CDC ke tipe Hologres dengan rentang lebih luas.

  • ONLY_BIGINT_OR_TEXT: Mengonversi semua tipe Flink CDC ke tipe BIGINT atau TEXT di Hologres.

sink.insert.legacy-put-handler

Menentukan apakah akan menggunakan Put Handler lama untuk menulis data ke Hologres.

Boolean

Tidak

false

Nilai yang valid:

  • false (bawaan): Put Handler baru digunakan untuk menulis data. Format SQL untuk operasi tulis adalah insert into xxx(c0,c1,...) select unnest(?),unnest(?),... on conflict.

  • true: Menulis data menggunakan Put Handler lama. Format SQL untuk penulisan adalah insert into xxx(c0,c1,...) values (?,?,...),... on conflict; .

table_property.*

Properti tabel fisik untuk Hologres.

String

Tidak

None

Saat membuat tabel Hologres, Anda dapat mengatur properti tabel fisik dalam klausa WITH. Properti tabel yang sesuai dapat membantu sistem mengatur dan mengkueri data secara efisien.

Peringatan

Parameter table_property.distribution_key secara bawaan menggunakan nilai kunci primer. Jangan mengubah pengaturan ini kecuali Anda benar-benar memahami dampaknya, karena hal ini dapat memengaruhi kebenaran penulisan data.

connection.ssl.mode

Menentukan apakah akan mengaktifkan enkripsi transport Secure Sockets Layer (SSL) dan mode mana yang akan digunakan.

String

Tidak

disable

  • disable (bawaan): Menonaktifkan enkripsi transport.

  • require: Mengaktifkan SSL untuk mengenkripsi tautan data.

  • verify-ca: Mengaktifkan SSL, mengenkripsi tautan data, dan menggunakan sertifikat CA untuk memverifikasi keaslian server Hologres.

  • verify-full: Mengaktifkan SSL, mengenkripsi tautan data, menggunakan sertifikat CA untuk memverifikasi keaslian server Hologres, dan memverifikasi bahwa CN atau nama DNS dalam sertifikat sesuai dengan titik akhir Hologres yang dikonfigurasi.

Catatan
  • Hologres V2.1 dan versi lebih baru mendukung mode verify-ca dan verify-full. Untuk informasi lebih lanjut, lihat Enkripsi transport.

  • Jika Anda mengatur parameter ini ke verify-ca atau verify-full, Anda juga harus mengonfigurasi parameter connection.ssl.root-cert.location.

connection.ssl.root-cert.location

Saat mode enkripsi transport memerlukan sertifikat, menentukan path ke file sertifikat.

String

Tidak

None

Saat connection.ssl.mode diatur ke verify-ca atau verify-full, Anda juga harus mengonfigurasi path ke sertifikat CA. Anda dapat mengunggah sertifikat ke platform menggunakan fitur Manajemen File di Konsol Realtime Compute. Setelah sertifikat diunggah, sertifikat tersebut disimpan di direktori /flink/usrlib. Misalnya, jika file sertifikat CA bernama certificate.crt, nilai parameter harus '/flink/usrlib/certificate.crt'.

Catatan

Untuk mendapatkan sertifikat CA, lihat Enkripsi transport - Unduh sertifikat CA.

connection.akv4.enabled

Menentukan apakah akan mengaktifkan mode AKV4 untuk menghubungkan ke server Hologres.

Boolean

Tidak

false

N/A.

connection.akv4.region

Saat mode AKV4 diaktifkan, menentukan wilayah tempat server berada.

String

Tidak

None

Misalnya, cn-shanghai.

Gunakan Katalog yang Sudah Ada

Mulai dari VVR 11.5, Anda dapat langsung mereferensikan Katalog Hologres bawaan yang dibuat di halaman Data Management dalam pekerjaan ingesti data Flink CDC. Hal ini mengurangi kebutuhan untuk menentukan properti koneksi secara manual.

sink:
  type: hologres
  using.built-in-catalog: my_holo_catalog

Pekerjaan ingesti data dapat secara otomatis menggunakan kembali parameter Katalog Hologres berikut:

  • endpoint

  • username

  • password

  • dbname

Untuk mengganti parameter yang digunakan kembali secara otomatis ini, Anda dapat secara eksplisit menentukan parameter YAML yang sesuai, yang memiliki prioritas lebih tinggi.

Pemetaan tipe data

Anda dapat menggunakan parameter sink.type-normalize-strategy untuk mengatur strategi konversi data hulu ke tipe Hologres.

Catatan
  • Aktifkan sink.type-normalize-strategy saat Anda memulai pekerjaan YAML untuk pertama kalinya. Jika Anda mengaktifkannya setelah pekerjaan dimulai, Anda harus menghapus tabel hilir dan me-restart pekerjaan tanpa state agar pengaturan tersebut berlaku.

  • Saat ini, tipe array hanya mendukung INTEGER, BIGINT, FLOAT, DOUBLE, BOOLEAN, CHAR, dan VARCHAR.

  • Hologres tidak mendukung tipe numeric sebagai kunci primer. Jika tipe kunci primer dipetakan ke numeric, sistem akan mengonversinya ke tipe varchar.

STANDARD

Saat sink.type-normalize-strategy diatur ke STANDARD, tipe data dipetakan sebagai berikut:

Tipe Flink CDC

Tipe Hologres

CHAR

bpchar

STRING

text

VARCHAR

text (jika panjang > 10485760)

varchar (jika panjang <= 10485760)

BOOLEAN

bool

BINARY

bytea

VARBINARY

DECIMAL

numeric

TINYINT

int2

SMALLINT

INTEGER

int4

BIGINT

int8

FLOAT

float4

DOUBLE

float8

DATE

date

TIME_WITHOUT_TIME_ZONE

time

TIMESTAMP_WITHOUT_TIME_ZONE

timestamp

TIMESTAMP_WITH_LOCAL_TIME_ZONE

timestamptz

ARRAY

Array dari tipe elemen yang sesuai

MAP

Tidak didukung

ROW

Tidak didukung

BROADEN

Saat sink.type-normalize-strategy diatur ke BROADEN, tipe Flink CDC dikonversi ke tipe Hologres dengan rentang lebih luas. Pemetaan tipe data sebagai berikut:

Tipe Flink CDC

Tipe Hologres

CHAR

text

STRING

VARCHAR

BOOLEAN

bool

BINARY

bytea

VARBINARY

DECIMAL

numeric

TINYINT

int8

SMALLINT

INTEGER

BIGINT

FLOAT

float8

DOUBLE

DATE

date

TIME_WITHOUT_TIME_ZONE

time

TIMESTAMP_WITHOUT_TIME_ZONE

timestamp

TIMESTAMP_WITH_LOCAL_TIME_ZONE

timestamptz

ARRAY

Array dari tipe elemen yang sesuai

MAP

Tidak didukung

ROW

Tidak didukung

ONLY_BIGINT_OR_TEXT

Saat sink.type-normalize-strategy diatur ke ONLY_BIGINT_OR_TEXT, semua tipe Flink CDC dikonversi ke tipe BIGINT atau STRING di Hologres. Pemetaan tipe data sebagai berikut:

Tipe Flink CDC

Tipe Hologres

TINYINT

int8

SMALLINT

INTEGER

BIGINT

BOOLEAN

text

BINARY

VARBINARY

DECIMAL

FLOAT

DOUBLE

DATE

TIME_WITHOUT_TIME_ZONE

TIMESTAMP_WITHOUT_TIME_ZONE

TIMESTAMP_WITH_LOCAL_TIME_ZONE

ARRAY

Array dari tipe elemen yang sesuai

MAP

Tidak didukung

ROW

Tidak didukung

Penulisan ke tabel partisi

Anda dapat menggunakan sink Hologres dengan transform untuk menulis data hulu ke tabel partisi Hologres.

  • partition key harus merupakan bagian dari primary key. Jika Anda menggunakan kolom non-primary key dari data hulu sebagai partition key, kunci primer tabel hulu dan hilir dapat menjadi tidak konsisten, sehingga menyebabkan ketidaksesuaian data selama sinkronisasi data.

  • Hologres mendukung kolom dengan tipe data TEXT, VARCHAR, dan INT sebagai partition key. Mulai versi 1.3.22, kolom dengan tipe data DATE juga didukung.

  • Untuk secara otomatis membuat tabel partisi anak, atur parameter createparttable ke true. Jika tidak, Anda harus membuatnya secara manual.

Lihat Menulis data ke tabel partisi untuk contoh.

Sinkronisasi skema tabel

Pipeline YAML CDC menggunakan strategi berbeda untuk menangani perubahan skema tabel, yang dapat dikonfigurasi dengan parameter tingkat pipeline schema.change.behavior. Nilai yang valid untuk schema.change.behavior adalah IGNORE, LENIENT, TRY_EVOLVE, EVOLVE, dan EXCEPTION. Sink Hologres saat ini tidak mendukung strategi TRY_EVOLVE. Strategi LENIENT dan EVOLVE melibatkan perubahan skema tabel. Bagian berikut menjelaskan bagaimana kedua mode ini menangani berbagai peristiwa perubahan skema.

LENIENT (bawaan)

Dalam mode LENIENT, perubahan skema ditangani sebagai berikut:

  • Menambahkan kolom nullable: Kolom yang sesuai secara otomatis ditambahkan di akhir tabel sink, dan datanya disinkronkan.

  • Menghapus kolom nullable: Kolom tidak dihapus dari tabel sink. Sebaliknya, kolom tersebut secara otomatis diisi dengan nilai NULL.

  • Menambahkan kolom non-nullable: Kolom nullable yang sesuai secara otomatis ditambahkan di akhir tabel sink, dan datanya disinkronkan. Untuk baris yang sudah ada, kolom baru ini secara otomatis diisi dengan NULL.

  • Mengganti nama kolom: Operasi ini dianggap sebagai penghapusan kolom dan penambahan kolom baru. Kolom baru dengan nama yang ditentukan ditambahkan di akhir tabel sink, dan kolom dengan nama asli secara otomatis diisi dengan nilai NULL. Misalnya, jika col_a diganti namanya menjadi col_b, kolom col_b ditambahkan di akhir tabel sink, dan kolom col_a secara otomatis diisi dengan nilai NULL.

  • Mengubah tipe data kolom: Tidak didukung. Karena Hologres tidak mendukung perubahan tipe data kolom, Anda harus menggunakan parameter sink.type-normalize-strategy.

  • Perubahan skema berikut tidak didukung:

    • Perubahan pada constraint, seperti kunci primer atau indeks.

    • Menghapus kolom non-nullable.

    • Mengubah kolom dari NOT NULL menjadi NULLABLE.

EVOLVE

Dalam mode EVOLVE, perubahan skema ditangani sebagai berikut:

  • Menambahkan kolom nullable: Didukung.

  • Menghapus kolom nullable: Tidak didukung.

  • Menambahkan kolom non-nullable: Kolom nullable baru ditambahkan ke tabel sink.

  • Mengganti nama kolom: Didukung. Kolom asli diganti namanya di tabel sink.

  • Mengubah tipe data kolom: Tidak didukung. Karena Hologres tidak mendukung perubahan tipe data kolom, Anda harus menggunakan parameter sink.type-normalize-strategy.

  • Perubahan skema berikut tidak didukung:

    • Perubahan pada constraint, seperti kunci primer atau indeks.

    • Menghapus kolom non-nullable.

    • Mengubah kolom dari NOT NULL menjadi NULLABLE.

Peringatan

Dalam mode EVOLVE, melakukan restart tanpa state tanpa menghapus tabel sink dapat menyebabkan pipeline gagal karena ketidaksesuaian skema antara data hulu dan tabel sink. Anda kemudian harus menyesuaikan skema tabel sink secara manual.

Lihat Mengaktifkan mode EVOLVE untuk contoh.

Contoh kode

Pelebaran tipe

Gunakan parameter sink.type-normalize-strategy untuk mengonfigurasi pelebaran tipe.

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

Penulisan ke tabel partisi

Konversi bidang timestamp create_time ke tipe date dan gunakan sebagai kunci partisi untuk tabel Hologres.

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Secara otomatis membuat tabel partisi jika belum ada.
  createparttable: true
 
transform:
  - source-table: test_db.test_source_table
    projection: \*, DATE_FORMAT(CAST(create_time AS TIMESTAMP), 'yyyy-MM-dd') as partition_key
    primary-keys: id, create_time, partition_key
    partition-keys: partition_key
    description: add partition key 

pipeline:
  name: MySQL to Hologres Pipeline

Mengaktifkan EVOLVE mode

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Secara otomatis membuat tabel partisi jika belum ada.
  createparttable: true

pipeline:
  name: MySQL to Hologres Pipeline
  schema.change.behavior: evolve

Sinkronisasi tabel tunggal

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.test_source_table
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

Sinkronisasi database penuh

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

Menggabungkan tabel terbagi (sharded)

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.user\.*
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.  
  sink.type-normalize-strategy: BROADEN
  
route:
  # Semua tabel terbagi di database MySQL test_db digabung menjadi satu tabel Hologres bernama test_db.user.
  - source-table: test_db.user\.*
    sink-table: test_db.user

pipeline:
  name: MySQL to Hologres Pipeline

Sinkronisasi ke skema tertentu

Di Hologres, skema berpadanan dengan database di MySQL. Anda dapat menentukan skema untuk tabel sink.

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.user\.*
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.
  sink.type-normalize-strategy: BROADEN
  
route:
  # Sinkronkan semua tabel dari database MySQL test_db ke skema Hologres test_db2 sambil mempertahankan nama tabel asli.
  - source-table: test_db.\.*
    sink-table: test_db2.<>
    replace-symbol: <>

pipeline:
  name: MySQL to Hologres Pipeline

Sinkronisasi tabel baru tanpa restart

Untuk menyinkronkan tabel yang baru ditambahkan secara real-time saat pekerjaan sedang berjalan, atur scan.binlog.newly-added-table.enable = true.

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  server-id: 5401-5499
  # Secara otomatis menangkap tabel baru yang dibuat saat pekerjaan berjalan.  
  scan.binlog.newly-added-table.enabled: true

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

Menambahkan tabel yang sudah ada saat restart

Untuk menyertakan tabel yang sudah ada dalam sinkronisasi, atur scan.newly-added-table.enabled ke true dan restart pekerjaan.

Peringatan

Jangan gunakan scan.newly-added-table.enabled pada pekerjaan yang sebelumnya dijalankan dengan scan.binlog.newly-added-table.enabled. Kombinasi ini menyebabkan duplikasi data saat restart.

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  server-id: 5401-5499
  scan.startup.mode: initial
  # Saat restart, pekerjaan memindai tabel baru yang sesuai dengan parameter `tables` dan melakukan snapshot.
  # Catatan: Parameter ini harus digunakan dengan scan.startup.mode: initial.
  scan.newly-added-table.enabled: true

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

Mengecualikan tabel

source:
  type: mysql
  name: MySQL Source
  hostname: <yourHostname>
  port: 3306
  username: flink
  password: ${secret_values.password}
  tables: test_db.\.*
  # Mengecualikan tabel yang sesuai dengan ekspresi reguler ini.
  tables.exclude: test_db.table1
  server-id: 5401-5499

sink:
  type: hologres
  name: Hologres Sink
  endpoint: <yourEndpoint>
  dbname: <yourDbname>
  username: ${secret_values.ak_id}
  password: ${secret_values.ak_secret}
  # Memetakan tipe data CDC ke tipe Hologres yang lebih luas.
  sink.type-normalize-strategy: BROADEN

pipeline:
  name: MySQL to Hologres Pipeline

Dokumen terkait