Memigrasi tabel CDC ke region lain

Halaman ini menjelaskan praktik terbaik untuk kasus penggunaan saat Anda telah menyiapkan replika Datastream ke BigQuery, tetapi mengonfigurasi set data tujuan di region yang salah. Kemudian, Anda ingin memindahkan set data ke region lain (atau multi-region) tanpa harus menyinkronkan ulang semua data dari database sumber ke BigQuery.

Sebelum memulai

Sebelum Anda mulai memigrasikan data ke region lain, pertimbangkan hal-hal berikut:

  • Migrasi memerlukan waktu, dan Anda harus menjeda streaming untuk sementara selama operasi. Untuk menjaga integritas data, database sumber harus mempertahankan log perubahan saat streaming dijeda. Untuk memperkirakan berapa lama streaming dijeda, gabungkan nilai max_staleness dalam set data dan operasi penggabungan yang berjalan paling lama:
    • Untuk mengetahui informasi tentang waktu yang diperlukan untuk menyelesaikan operasi penggabungan, lihat Nilai max_staleness tabel yang direkomendasikan.
    • Untuk menemukan max_staleness maksimum dalam set data, lihat Menentukan nilai max_staleness tabel saat ini dan sesuaikan kueri dengan kebutuhan spesifik Anda.
    • Jika estimasi jeda terlalu lama untuk didukung database sumber, Anda dapat mempertimbangkan untuk mengurangi nilai max_staleness sementara untuk tabel dalam set data.
  • Pastikan pengguna yang melakukan migrasi memiliki resource BigQuery yang memadai di region tujuan (reservasi kueri dan reservasi latar belakang). Untuk mengetahui informasi selengkapnya tentang reservasi, lihat Penetapan reservasi.
  • Pastikan pengguna yang melakukan migrasi memiliki izin yang memadai untuk melakukan operasi ini, seperti kontrol Identity and Access Management (IAM) atau Kontrol Layanan VPC.

Langkah-langkah migrasi

Untuk memulai migrasi set data, gunakan replikasi data BigQuery:

  1. Di konsol Google Cloud, buka halaman BigQuery Studio.

    Buka BigQuery Studio

  2. Buat replika set data BigQuery di region baru:

    ALTER SCHEMA DATASET_NAME
    ADD REPLICA 'NEW_REGION'
    OPTIONS(location='NEW_REGION');
    

    Ganti kode berikut:

    • DATASET_NAME: nama set data yang ingin Anda buat.
    • NEW_REGION: nama region tempat Anda ingin membuat set data. Contoh, region-us.
  3. Pantau progres migrasi, dan tunggu hingga watermark salinan di replika dalam beberapa menit dari salinan utama. Anda dapat menjalankan kueri ini di INFORMATION_SCHEMA BigQuery untuk memeriksa progres migrasi:

    SELECT
    catalog_name as project_id,
    schema_name as dataset_name,
    replication_time as dataset_replica_staleness
    FROM
    'NEW_REGION'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
    catalog_name = PROJECT_ID
    AND schema_name = DATASET_NAME
    AND location = NEW_REGION;
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • DATASET_NAME: nama set data Anda.
    • DATASET_REPLICA_STALENESS: konfigurasi keusangan tabel di replika set data yang Anda buat.
    • NEW_REGION: region tempat Anda membuat set data.
  4. Jeda aliran Datastream yang ada. Untuk mengetahui informasi selengkapnya, lihat Menjeda streaming.

  5. Tunggu hingga streaming habis dan catat waktu saat streaming memasuki status PAUSED.

  6. Pastikan perubahan CDC terbaru telah diterapkan ke tabel BigQuery dengan memeriksa upsert_stream_apply_watermark untuk tabel. Jalankan kueri berikut dan pastikan stempel waktu watermark 10 menit lebih lambat dari saat streaming dijeda:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    Untuk menjalankan kueri hanya untuk tabel tertentu, tambahkan klausa WHERE berikut:

    WHERE table_name = 'TABLE_NAME'
    

    Ganti kode berikut:

    • DATASET_NAME: nama set data Anda.
    • TABLE_NAME: optional. Tabel yang ingin Anda periksa upsert_stream_apply_watermark-nya.
  7. Gunakan kueri dari langkah 3 untuk memverifikasi bahwa watermark salinan region baru lebih baru dari upsert_stream_apply_watermark yang diambil pada langkah 6.

  8. Secara opsional, bandingkan beberapa tabel dalam set data utama di region asli dengan replika di region baru secara manual untuk memverifikasi bahwa semua data disalin dengan benar.

  9. Promosikan replika set data BigQuery dengan menjalankan perintah berikut di BigQuery Studio:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(primary_replica = 'NEW_REGION');
    

    Ganti kode berikut:

    • DATASET_NAME: nama set data Anda.
    • NEW_REGION: region tempat Anda membuat set data.
  10. Atau, jika Anda tidak lagi memerlukan set data asli (sekarang replika), dan tidak ingin dikenai biaya tambahan, buka BigQuery Studio dan hapus set data BigQuery asli:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    Ganti kode berikut:

    • DATASET_NAME: nama set data asli.
    • ORIGINAL_REGION: region set data asli.
  11. Buat aliran data baru dengan konfigurasi yang sama persis, tetapi dengan lokasi tujuan BigQuery baru.

  12. Mulai streaming baru.

    Untuk mencegah duplikasi peristiwa, mulai streaming dari posisi tertentu:

    • Untuk sumber MySQL dan Oracle: Anda dapat mengidentifikasi posisi log dengan memeriksa log aliran asli dan menemukan posisi terakhir tempat aliran berhasil dibaca. Untuk informasi tentang cara memulai streaming dari posisi tertentu, lihat Mengelola streaming.
    • Untuk sumber PostgreSQL: streaming baru mulai membaca perubahan dari nomor urut log (LSN) pertama di slot replikasi. Karena aliran asli mungkin telah memproses beberapa perubahan ini, ubah pointer slot replikasi secara manual ke LSN terakhir tempat Datastream membaca. Anda dapat menemukan LSN ini di log konsumen Datastream.
  13. Jika ingin, hapus streaming asli.