Menggunakan Datastream dengan tabel BigQuery yang sudah ada

Halaman ini menjelaskan praktik terbaik untuk kasus penggunaan saat:

  • Pengguna memiliki tabel yang sudah ada di BigQuery dan perlu mereplikasi data mereka menggunakan pengambilan data perubahan (CDC) ke tabel BigQuery yang sama.
  • Pengguna perlu menyalin data ke tabel BigQuery yang ada tanpa menggunakan kemampuan pengisian ulang Datastream, baik karena waktu yang diperlukannya maupun karena batasan produk.

Masalah

Tabel BigQuery yang diisi menggunakan BigQuery Storage Write API tidak mengizinkan operasi bahasa pengolahan data (DML) reguler. Artinya, setelah aliran CDC mulai menulis ke tabel BigQuery, tidak ada cara untuk menambahkan data historis yang belum diisi otomatis di tabel.

Pertimbangkan skenario berikut:

  1. TIMESTAMP 1: operasi penyalinan tabel dimulai.
  2. TIMESTAMP 2: saat tabel disalin, operasi DML di sumber akan menyebabkan perubahan pada data (baris ditambahkan, diperbarui, atau dihapus).
  3. TIMESTAMP 3: CDC dimulai, perubahan yang terjadi di TIMESTAMP 2 tidak diambil, sehingga menyebabkan perbedaan data.

Solusi

Untuk memastikan integritas data, proses CDC harus mencatat semua perubahan dalam sumber yang terjadi sejak saat segera setelah pembaruan terakhir dilakukan yang disalin ke tabel BigQuery.

Solusi berikut memungkinkan Anda memastikan bahwa proses CDC menangkap semua perubahan dari TIMESTAMP 2, tanpa memblokir operasi salinan agar tidak menulis data ke tabel BigQuery.

Prasyarat

  • Tabel target di BigQuery harus memiliki skema dan konfigurasi yang sama persis seperti tabel yang dibuat oleh Datastream. Anda dapat menggunakan Toolkit Migrasi BigQuery Datastream untuk melakukannya.
  • Untuk sumber MySQL dan Oracle, pengguna harus dapat mengidentifikasi posisi log saat operasi penyalinan dimulai.
  • Database harus memiliki penyimpanan dan kebijakan retensi log yang memadai agar proses penyalinan tabel dapat diselesaikan.

Sumber MySQL dan Oracle

  1. Buat, tetapi jangan mulai aliran data yang ingin Anda gunakan untuk replikasi CDC yang sedang berlangsung. Aliran data harus dalam status CREATED.
  2. Jika Anda siap memulai operasi penyalinan tabel, identifikasi posisi log database saat ini:
    • Untuk MySQL, lihat dokumentasi MySQL untuk mempelajari cara mendapatkan koordinat log biner replikasi. Setelah Anda mengidentifikasi posisi log, tutup sesi untuk melepaskan kunci apa pun di database.
    • Untuk Oracle, jalankan kueri berikut: SELECT current_scn FROM V$DATABASE
  3. Salin tabel dari database sumber ke BigQuery.
  4. Setelah operasi penyalinan selesai, ikuti langkah-langkah yang dijelaskan di halaman Kelola streaming untuk memulai streaming dari posisi log yang Anda identifikasi sebelumnya.

Sumber PostgreSQL

  1. Jika Anda sudah siap untuk mulai menyalin tabel, buat slot replikasi. Untuk informasi selengkapnya, lihat Mengonfigurasi database PostgreSQL sumber.
  2. Salin tabel dari database sumber ke BigQuery.
  3. Setelah operasi penyalinan selesai, buat dan mulai streaming.