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 dalam tabel BigQuery yang sama.
  • Pengguna perlu menyalin data ke dalam tabel BigQuery yang ada tanpa menggunakan kemampuan pengisian ulang Datastream, baik karena waktu yang dibutuhkan atau karena batasan produk.

Masalah

Tabel BigQuery yang diisi menggunakan BigQuery Storage Write API tidak mengizinkan operasi bahasa manipulasi data (DML) reguler. Artinya, setelah aliran CDC mulai menulis ke tabel BigQuery, tidak ada cara untuk menambahkan data historis yang belum diisi sebelumnya dalam 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 direkam, sehingga menyebabkan perbedaan data.

Solusi

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

Solusi berikut memungkinkan Anda memastikan bahwa proses CDC mencatat semua perubahan dari TIMESTAMP 2, tanpa memblokir operasi penyalinan dari penulisan data ke tabel BigQuery.

Prasyarat

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

Sumber MySQL dan Oracle

  1. Buat, tetapi jangan memulai streaming yang ingin Anda gunakan untuk replikasi CDC yang sedang berlangsung. Aliran data harus dalam status DIBUAT.
  2. Saat Anda siap memulai operasi penyalinan tabel, identifikasi posisi log saat ini database:
    • Untuk MySQL, lihat dokumentasi MySQL untuk mempelajari cara mendapatkan koordinat log biner replikasi. Setelah Anda mengidentifikasi posisi log, tutup sesi untuk melepaskan semua kunci pada 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 Mengelola aliran untuk memulai aliran dari posisi log yang Anda identifikasi sebelumnya.

Sumber PostgreSQL

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