Change Data Capture dari MySQL ke BigQuery menggunakan template Debezium dan Pub/Sub (Stream)

Template Change Data Capture dari MySQL ke BigQuery menggunakan Debezium dan Pub/Sub adalah pipeline streaming yang membaca pesan Pub/Sub dengan data perubahan dari database MySQL dan menulis rekaman ke BigQuery. Konektor Debezium menangkap perubahan pada database MySQL dan memublikasikan data yang diubah ke Pub/Sub. Template kemudian membaca pesan Pub/Sub dan menuliskannya ke BigQuery.

Anda dapat menggunakan template ini untuk menyinkronkan database MySQL dan tabel BigQuery. Pipeline menulis data yang diubah ke tabel penahapan BigQuery dan secara berkala memperbarui tabel BigQuery yang mereplikasi database MySQL.

Persyaratan pipeline

  • Konektor Debezium harus di-deploy.
  • Pesan Pub/Sub harus diserialkan dalam Baris Beam.

Parameter template

Parameter yang diperlukan

  • inputSubscriptions: Daftar langganan input Pub/Sub yang dipisahkan koma yang akan dibaca, dalam format <SUBSCRIPTION_NAME>,<SUBSCRIPTION_NAME>, ....
  • changeLogDataset: Set data BigQuery untuk menyimpan tabel penahapan, dalam format <DATASET_NAME>.
  • replicaDataset: Lokasi set data BigQuery untuk menyimpan tabel replika, dalam format <DATASET_NAME>.

Parameter opsional

  • inputTopics: Daftar topik PubSub yang dipisahkan koma tempat data CDC dikirim.
  • updateFrequencySecs: Interval saat pipeline memperbarui tabel BigQuery yang mereplikasi database MySQL.
  • useSingleTopic: Tetapkan parameter ini ke true jika Anda mengonfigurasi konektor Debezium untuk memublikasikan semua pembaruan tabel ke satu topik. Nilai defaultnya: salah.
  • useStorageWriteApi: Jika benar (true), pipeline akan menggunakan BigQuery Storage Write API (https://cloud.google.com/bigquery/docs/write-api). Nilai defaultnya adalah false. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Storage Write API (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api).
  • useStorageWriteApiAtLeastOnce: Saat menggunakan Storage Write API, menentukan semantik penulisan. Untuk menggunakan semantik minimal satu kali (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), tetapkan parameter ini ke true. Untuk menggunakan semantik tepat satu kali, tetapkan parameter ke false. Parameter ini hanya berlaku jika useStorageWriteApi adalah true. Nilai defaultnya adalah false.
  • numStorageWriteApiStreams: Saat menggunakan Storage Write API, menentukan jumlah streaming penulisan. Jika useStorageWriteApi adalah true dan useStorageWriteApiAtLeastOnce adalah false, Anda harus menetapkan parameter ini. Nilai defaultnya adalah: 0.
  • storageWriteApiTriggeringFrequencySec: Saat menggunakan Storage Write API, menentukan frekuensi pemicuan, dalam detik. Jika useStorageWriteApi adalah true dan useStorageWriteApiAtLeastOnce adalah false, Anda harus menetapkan parameter ini.

Menjalankan template

Untuk menjalankan template ini, lakukan langkah-langkah berikut:

  1. Di komputer lokal Anda, clone repositori DataflowTemplates.
  2. Ubah ke direktori v2/cdc-parent.
  3. Pastikan konektor Debezium di- deploy.
  4. Dengan menggunakan Maven, jalankan template Dataflow:
    mvn exec:java -pl cdc-change-applier -Dexec.args="--runner=DataflowRunner \
        --inputSubscriptions=SUBSCRIPTIONS \
        --updateFrequencySecs=300 \
        --changeLogDataset=CHANGELOG_DATASET \
        --replicaDataset=REPLICA_DATASET \
        --project=PROJECT_ID \
        --region=REGION_NAME"
      

    Ganti kode berikut:

    • PROJECT_ID: Google Cloud Project ID tempat Anda ingin menjalankan tugas Dataflow
    • SUBSCRIPTIONS: daftar nama langganan Pub/Sub yang dipisahkan koma
    • CHANGELOG_DATASET: set data BigQuery Anda untuk data log perubahan
    • REPLICA_DATASET: set data BigQuery Anda untuk tabel replika

Langkah berikutnya