Halaman ini menjelaskan praktik terbaik untuk kasus penggunaan jika:
- Pengguna sudah memiliki tabel 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 sudah ada tanpa menggunakan kemampuan pengisian ulang Datastream, baik karena waktu yang dibutuhkan atau karena keterbatasan produk.
Masalah
Tabel BigQuery yang diisi menggunakan BigQuery Storage Write API tidak memungkinkan operasi bahasa manipulasi data (DML) reguler. Ini berarti bahwa setelah aliran CDC mulai menulis ke tabel BigQuery, tidak ada cara untuk menambahkan data historis yang belum diisi otomatis dalam tabel.
Pertimbangkan skenario berikut:
- STEMPEL WAKTU 1: operasi penyalinan tabel dimulai.
- TIMESTAMP 2: saat tabel sedang disalin, operasi DML di sumber menghasilkan perubahan pada data (baris ditambahkan, diperbarui, atau dihapus).
- TIMESTAMP 3: CDC dimulai, perubahan yang terjadi pada TIMESTAMP 2 tidak diambil, sehingga menyebabkan perbedaan data.
Solusi
Untuk memastikan integritas data, proses CDC harus menangkap semua perubahan dalam sumber yang terjadi dari momen segera setelah update terakhir yang dilakukan yang disalin ke tabel BigQuery.
Solusi berikut memungkinkan Anda memastikan bahwa proses CDC menangkap 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 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 pada saat operasi penyalinan dimulai.
- Database harus memiliki kebijakan retensi log dan penyimpanan yang memadai agar proses penyalinan tabel dapat diselesaikan.
Sumber MySQL dan Oracle
- Buat, tetapi jangan memulai aliran data yang ingin Anda gunakan untuk replikasi CDC yang sedang berlangsung. Streaming harus dalam status CREATED.
- 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 melepas kunci pada database.
- Untuk Oracle, jalankan kueri berikut:
SELECT current_scn FROM V$DATABASE
- Salin tabel dari database sumber ke BigQuery.
- Setelah operasi penyalinan selesai, ikuti langkah-langkah yang dijelaskan di halaman Mengelola aliran data untuk memulai aliran data dari posisi log yang Anda identifikasi sebelumnya.
Sumber PostgreSQL
- Jika Anda sudah siap untuk mulai menyalin tabel, buat slot replikasi. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi database PostgreSQL sumber.
- Salin tabel dari database sumber ke BigQuery.
- Setelah operasi penyalinan selesai, buat dan mulai streaming.