Replikasi set data lintas region

Dengan replikasi set data BigQuery, Anda dapat menyiapkan replikasi otomatis set data antara dua region atau multi-region yang berbeda.

Ringkasan

Saat membuat set data di BigQuery, Anda memilih region atau multi-region tempat data disimpan. Region adalah kumpulan pusat data dalam area geografis, dan multi-region adalah area geografis besar yang berisi dua region geografis atau lebih. Data Anda disimpan di salah satu region yang ada, dan tidak direplikasi dalam multi-region. Untuk mengetahui informasi selengkapnya tentang region dan multi-region, lihat lokasi BigQuery.

BigQuery selalu menyimpan salinan data Anda di dua zona Google Cloud yang berbeda dalam lokasi set data. Zona adalah area deployment untuk resource Google Cloud dalam suatu region. Di semua region, replikasi antarzona menggunakan penulisan ganda sinkron. Memilih lokasi multi-region tidak memberikan replikasi lintas-region atau redundansi regional, sehingga tidak ada peningkatan ketersediaan set data jika terjadi pemadaman layanan regional. Data disimpan di satu region dalam lokasi geografis.

Untuk geo-redundansi tambahan, Anda dapat mereplikasi set data apa pun. BigQuery membuat replika sekunder set data tersebut, yang terletak di region lain yang Anda tentukan. Selanjutnya, replika ini direplikasi secara asinkron antara dua zona dengan region lainnya, dengan total empat salinan zona.

Replikasi set data

Jika Anda mereplikasi set data, BigQuery akan menyimpan data di region yang Anda tentukan.

  • Region utama. Saat Anda pertama kali membuat set data, BigQuery menempatkan set data di region utama.

  • Region sekunder. Saat Anda menambahkan replika set data, BigQuery akan menempatkan replika tersebut di region sekunder.

Awalnya, replika di region utama adalah replika utama, dan replika di region sekunder adalah replika sekunder.

Replika utama dapat ditulis, dan replika sekunder bersifat hanya baca. Penulisan ke replika utama direplikasi secara asinkron ke replika sekunder. Dalam setiap region, data disimpan secara redundan di dua zona. Traffic jaringan tidak pernah keluar dari jaringan Google Cloud.

Diagram berikut menunjukkan replikasi yang terjadi saat set data direplikasi:

Replika utama di zona utama region 1 secara bersamaan direplikasi ke zona utama dan sekunder dari region 2.

Jika region utama online, Anda dapat beralih secara manual ke replika sekunder. Untuk informasi selengkapnya, lihat Mempromosikan replika sekunder.

Harga

Anda akan dikenakan biaya untuk set data yang direplikasi berikut:

  • Penyimpanan. Byte penyimpanan di region sekunder dikenakan biaya sebagai salinan terpisah di region sekunder. Lihat Harga penyimpanan BigQuery.
  • Replikasi data. Untuk mengetahui informasi selengkapnya mengenai penagihan replikasi data Anda, lihat Harga replikasi data.

Kapasitas komputasi di region sekunder

Untuk menjalankan tugas dan kueri terhadap replika di region sekunder, Anda harus membeli slot dalam region sekunder atau menjalankan kueri on demand.

Anda dapat menggunakan slot untuk melakukan kueri hanya baca dari replika sekunder. Jika Anda mempromosikan replika sekunder menjadi replika utama, Anda juga dapat menggunakan slot tersebut untuk menulis ke replika.

Anda dapat membeli slot dengan jumlah yang sama dengan yang ada di region utama, atau dengan jumlah yang berbeda. Jika Anda membeli lebih sedikit slot, mungkin akan memengaruhi performa kueri.

Pertimbangan lokasi

Sebelum menambahkan replika set data, Anda harus membuat set data awal yang ingin direplikasi di BigQuery jika belum ada. Lokasi replika yang ditambahkan ditetapkan ke lokasi yang Anda tentukan saat menambahkan replika. Lokasi replika yang ditambahkan harus berbeda dari lokasi set data awal. Ini berarti data dalam set data Anda terus direplikasi antara lokasi pembuatan set data dan lokasi replika. Untuk replika yang memerlukan kolokasi, seperti tampilan, tampilan terwujud, atau tabel eksternal non-BigLake, menambahkan replika di lokasi yang berbeda dari, atau tidak kompatibel dengan, lokasi data sumber Anda dapat menyebabkan error tugas.

Saat pelanggan mereplikasi set data di berbagai region, BigQuery akan memastikan bahwa data hanya ditempatkan di lokasi tempat replika dibuat.

Persyaratan kolokasi

Penggunaan replikasi set data bergantung pada persyaratan kolokasi berikut.

Cloud Storage

Membuat kueri data di Cloud Storage mengharuskan bucket Cloud Storage dikolokasikan dengan replika. Gunakan pertimbangan lokasi tabel eksternal saat menentukan lokasi untuk menempatkan replika.

Batasan

Replikasi set data BigQuery menerapkan batasan berikut:

  • Data yang sedang streaming yang belum di-commit tidak direplikasi dalam replika sekunder jika tabel ditulis dengan BigQuery Storage Write API. Replikasi data streaming dari BigQuery Storage Write API atau tabledata.insertAll adalah upaya terbaik dan mungkin mengalami penundaan replikasi yang tinggi.
  • BigQuery Storage Read API tidak mendukung pembacaan dari tabel yang terdapat dalam replika set data sekunder. Untuk membaca dari tabel yang terdapat dalam replika sekunder, replika sekunder harus dipromosikan terlebih dahulu menjadi replika utama.
  • Tabel yang dimasukkan melalui Datastream ke BigQuery menggunakan Change Data Capture tidak didukung.
  • Anda tidak dapat mengaktifkan DML terperinci pada tabel dalam set data yang direplikasi, dan Anda tidak dapat mereplikasi set data yang berisi tabel dengan DML terperinci yang diaktifkan.
  • Replikasi dan peralihan dikelola melalui pernyataan bahasa definisi data (DDL) SQL.
  • Anda dibatasi untuk memiliki satu replika dari setiap set data untuk setiap region atau multi-region. Anda tidak dapat membuat dua replika sekunder dari set data yang sama di region tujuan yang sama.
  • Resource dalam replika menerapkan batasan seperti yang dijelaskan dalam Perilaku resource.
  • Tag kebijakan dan kebijakan data terkait tidak direplikasi ke replika sekunder. Setiap kueri yang mereferensikan kolom dengan tag kebijakan di region selain region asli akan gagal, meskipun replika tersebut dipromosikan.
  • Perjalanan waktu hanya tersedia di replika sekunder setelah pembuatan replika sekunder selesai.
  • Anda hanya dapat mereplikasi set data yang berisi kurang dari 100.000 tabel.
  • Anda dibatasi hingga maksimum 4 replika yang ditambahkan (lalu dihapus) ke region yang sama per set data per hari.
  • Anda dibatasi oleh bandwidth.
  • Tabel dengan Kunci enkripsi yang dikelola pelanggan (CMEK) tidak dapat diminta di region sekunder jika nilai replica_kms_key tidak dikonfigurasi.
  • Tabel BigLake tidak didukung.
  • Anda tidak dapat mereplikasi set data eksternal atau gabungan.
  • Lokasi BigQuery Omni tidak didukung.
  • Anda tidak dapat mengonfigurasi pasangan region berikut jika mengonfigurasi replikasi data untuk pemulihan dari bencana:
    • us-central1 - us multi-region
    • us-west1 - us multi-region
    • eu-west1 - eu multi-region
    • eu-west4 - eu multi-region

Perilaku resource

Operasi berikut tidak didukung pada resource dalam replika sekunder:

Jika perlu membuat salinan resource di replika sekunder, Anda harus menyalin resource atau membuat kueri, lalu mewujudkan hasilnya di luar replika sekunder. Misalnya, gunakan CREATE TABLE AS SELECT untuk membuat resource baru dari resource replika sekunder.

Replika utama dan sekunder memiliki perbedaan berikut:

Replika utama region 1 Replika sekunder region 2 Catatan
Tabel BigLake Tabel BigLake Tidak didukung.
Tabel eksternal Tabel eksternal Hanya definisi tabel eksternal yang direplikasi. Kueri gagal saat bucket Cloud Storage tidak ditempatkan bersama di lokasi yang sama dengan replika.
Tampilan logis Tampilan logis Tampilan logis yang mereferensikan set data atau resource yang tidak terletak di lokasi yang sama dengan tampilan logis akan gagal saat dikueri.
Tabel terkelola Tabel terkelola Tidak ada perbedaan
Tampilan terwujud Tampilan terwujud Jika tabel yang direferensikan tidak berada di region yang sama dengan tampilan terwujud, kueri akan gagal. Tampilan terwujud yang direplikasi bisa tidak berlaku lagi jika menggunakan max staleness tampilan.
Model Model Disimpan sebagai tabel terkelola.
Fungsi jarak jauh Fungsi jarak jauh Koneksi bersifat regional. Fungsi jarak jauh yang mereferensikan set data atau resource (koneksi) yang tidak terletak di lokasi yang sama dengan fungsi jarak jauh akan gagal saat dijalankan.
Rutinitas Fungsi yang ditentukan pengguna (UDF) atau prosedur tersimpan Rutinitas yang mereferensikan set data atau resource yang tidak terletak di lokasi yang sama dengan rutinitas akan gagal saat dijalankan. Rutinitas apa pun yang merujuk ke koneksi, seperti fungsi jarak jauh, tidak akan berfungsi di luar region sumber.
Kebijakan Akses Baris Kebijakan Akses Baris Tidak ada perbedaan
Indeks penelusuran Indeks penelusuran Tidak direplikasi.
Prosedur tersimpan Prosedur tersimpan Prosedur tersimpan yang mereferensikan set data atau resource yang tidak terletak di lokasi yang sama dengan prosedur yang disimpan akan gagal saat dijalankan.
Clone tabel Tabel terkelola Penagihan dilakukan sebagai deep copy dalam replika sekunder.
Snapshot tabel Snapshot tabel Penagihan dilakukan sebagai deep copy dalam replika sekunder.
Fungsi bernilai tabel (TVF) TVF TVF yang mereferensikan set data atau resource yang tidak terletak di lokasi yang sama dengan TVF akan gagal saat dijalankan.
UDF UDF UDF yang mereferensikan set data atau resource yang tidak terletak di lokasi yang sama dengan UDF akan gagal saat dijalankan.

Skenario gangguan

Replikasi lintas-region tidak dimaksudkan untuk digunakan sebagai disaster recovery plan selama terjadi gangguan total tingkat region. Jika terjadi gangguan total tingkat region di region replika utama, Anda tidak dapat mempromosikan replika sekunder. Karena replika sekunder bersifat hanya baca, Anda tidak dapat menjalankan tugas tulis di replika sekunder dan tidak dapat mempromosikan region sekunder sampai region replika utama dipulihkan. Untuk informasi selengkapnya tentang persiapan pemulihan dari bencana, lihat Pemulihan dari bencana terkelola.

Tabel berikut menjelaskan dampak gangguan layanan total region pada data replika:

Region 1 Region 2 Wilayah gangguan Dampak
Replika utama Replika sekunder Region 2 Tugas hanya baca yang berjalan di region 2 terhadap replika sekunder gagal.
Replika utama Replika sekunder Region 1 Semua tugas yang berjalan di region 1 gagal. Tugas hanya baca akan terus berjalan di region 2 tempat replika sekunder berada. Konten region 2 tidak berlaku lagi hingga berhasil disinkronkan dengan region 1.

Menggunakan replikasi set data

Bagian ini menjelaskan cara mereplikasi set data, mempromosikan replika sekunder, dan menjalankan tugas baca BigQuery di region sekunder.

Izin yang diperlukan

Untuk mendapatkan izin yang diperlukan guna mengelola replika, minta administrator untuk memberi Anda izin bigquery.datasets.update.

Mereplikasi set data

Untuk mereplikasi set data, gunakan pernyataan DDL ALTER SCHEMA ADD REPLICA.

Anda dapat menambahkan replika ke set data apa pun yang terletak di region atau multi-region yang belum direplikasi di region atau multi-region tersebut. Setelah Anda menambahkan replika, perlu waktu untuk menyelesaikan operasi penyalinan awal. Anda masih dapat menjalankan kueri yang merujuk pada replika utama saat data sedang direplikasi, tanpa pengurangan kapasitas pemrosesan kueri. Anda tidak dapat mereplikasi data dalam lokasi geografis dalam multi-region.

Contoh berikut membuat set data bernama my_dataset di region us-central1, lalu menambahkan replika di region us-east4:

-- Create the primary replica in the us-central1 region.
CREATE SCHEMA my_dataset OPTIONS(location='us-central1');

-- Create a replica in the secondary region.
ALTER SCHEMA my_dataset
ADD REPLICA `my_replica`
OPTIONS(location='us-east4');

Untuk mengonfirmasi kapan replika sekunder berhasil dibuat, Anda dapat membuat kueri kolom creation_complete dalam tampilan INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

Mempromosikan replika sekunder

Jika wilayah utama online, Anda dapat mempromosikan replika sekunder. Promosi mengalihkan replika sekunder menjadi replika sekunder yang dapat ditulis. Operasi ini selesai dalam beberapa detik jika replika sekunder mencapai replika utama. Jika replika sekunder tidak tercapai, promosi tidak dapat diselesaikan sampai bisa tercapai. Replika sekunder tidak dapat dipromosikan menjadi replika utama jika region yang berisi replika utama mengalami gangguan.

Perhatikan hal-hal berikut:

  • Semua penulisan ke tabel menampilkan error saat promosi sedang diproses. Replika utama lama menjadi tidak dapat langsung ditulis saat promosi dimulai.
  • Tabel yang tidak sepenuhnya direplikasi pada saat promosi dimulai akan menampilkan pembacaan yang sudah tidak berlaku.

Untuk mempromosikan replika menjadi replika utama, gunakan pernyataan DDL ALTER SCHEMA SET OPTIONS dan tetapkan opsi primary_replica.

Perhatikan hal berikut: - Anda harus secara eksplisit menetapkan lokasi tugas ke region sekunder di setelan kueri. Lihat BigQuery menentukan lokasi.

Contoh berikut mempromosikan replika us-east4 menjadi utama:

ALTER SCHEMA my_dataset SET OPTIONS(primary_replica = 'us-east4')

Untuk mengonfirmasi kapan replika sekunder berhasil dipromosikan, Anda dapat membuat kueri kolom replica_primary_assignment_complete di tampilan INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

Menghapus replika set data

Untuk menghapus replika dan berhenti mereplikasi set data, gunakan pernyataan DDL ALTER SCHEMA DROP REPLICA.

Contoh berikut menghapus replika us:

ALTER SCHEMA my_dataset
DROP REPLICA IF EXISTS `us`;

Anda harus terlebih dahulu melepaskan replika sekunder untuk menghapus seluruh set data. Jika Anda menghapus seluruh set data, misalnya dengan menggunakan pernyataan DROP SCHEMA tanpa menghapus semua replika sekunder, Anda akan menemui error.

Membuat daftar replika set data

Untuk membuat daftar replika set data dalam sebuah project, buat kueri tampilan INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

Memigrasikan set data

Anda dapat menggunakan replikasi set data lintas region untuk memigrasikan set data dari satu region ke region lain. Contoh berikut menunjukkan proses migrasi set data my_migration yang ada dari multi-region US ke multi-region EU menggunakan replikasi lintas-region.

Mereplikasi set data

Untuk memulai proses migrasi, pertama-tama replikasikan set data di region tempat Anda ingin memigrasikan data. Dalam skenario ini, Anda memigrasikan set data my_migration ke multi-region EU.

-- Create a replica in the secondary region.
ALTER SCHEMA my_migration
ADD REPLICA `eu`
OPTIONS(location='eu');

Tindakan ini akan membuat replika sekunder bernama eu di multi-region EU. Replika utama adalah set data my_migration di multi-region US.

Mempromosikan replika sekunder

Untuk terus memigrasikan set data ke multi-region EU, promosikan replika sekunder:

ALTER SCHEMA my_migration SET OPTIONS(primary_replica = 'eu')

Setelah promosi selesai, eu adalah replika utama. Ini adalah replika yang dapat ditulis.

Menyelesaikan migrasi

Untuk menyelesaikan migrasi dari multi-region US ke multi-region EU, hapus replika us. Langkah ini tidak diperlukan, tetapi berguna jika Anda tidak memerlukan replika set data di luar kebutuhan migrasi.

ALTER SCHEMA my_migration
DROP REPLICA IF EXISTS us;

Set data Anda berada di multi-region EU dan tidak ada replika set data my_migration. Anda telah berhasil memigrasikan set data ke multi-region EU. Daftar lengkap resource yang dimigrasikan dapat ditemukan dalam Perilaku resource.

Kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK)

Kunci Cloud Key Management Service yang dikelola pelanggan tidak secara otomatis direplikasi saat Anda membuat replika sekunder. Untuk mempertahankan enkripsi pada set data replika, Anda harus menetapkan replica_kms_key untuk lokasi replika yang ditambahkan. Anda dapat menetapkan replica_kms_key menggunakan pernyataan DDL ALTER SCHEMA ADD REPLICA.

Mereplikasi set data dengan CMEK akan berperilaku seperti yang dijelaskan dalam skenario berikut:

  • Jika set data sumber memiliki default_kms_key, Anda harus memberikan replica_kms_key yang dibuat di region set data replika saat menggunakan pernyataan DDL ALTER SCHEMA ADD REPLICA.

  • Jika set data sumber belum memiliki nilai yang ditetapkan untuk default_kms_key, Anda tidak dapat menetapkan replica_kms_key.

  • Jika Anda menggunakan rotasi kunci Cloud KMS pada salah satu (atau keduanya) default_kms_key atau replica_kms_key, set data yang direplikasi masih dapat dibuat kueri setelah rotasi kunci.

    • Rotasi kunci di region utama hanya memperbarui versi kunci dalam tabel yang dibuat setelah rotasi. Tabel yang ada sebelum rotasi kunci masih menggunakan versi kunci yang ditetapkan sebelum rotasi.
    • Rotasi kunci di region sekunder akan memperbarui semua tabel di replika sekunder ke versi kunci baru.
    • Mengalihkan replika utama ke replika sekunder akan memperbarui semua tabel di replika sekunder (sebelumnya replika utama) ke versi kunci baru.
    • Jika versi kunci yang ditetapkan pada tabel di replika utama sebelum rotasi kunci dihapus, tabel apa pun yang masih menggunakan versi kunci yang ditetapkan sebelum rotasi kunci tidak dapat dikueri hingga versi kunci diperbarui. Untuk mengupdate versi kunci, versi kunci lama harus aktif (tidak dinonaktifkan atau dihapus).
  • Jika set data sumber tidak memiliki nilai yang ditetapkan untuk default_kms_key, tetapi ada tabel individual dalam set data sumber dengan CMEK diterapkan, tabel tersebut tidak dapat dikueri dalam set data replika. Untuk membuat kueri tabel, lakukan hal berikut:

    • Tambahkan nilai default_kms_key untuk set data sumber.
    • Saat Anda membuat replika baru menggunakan pernyataan DDL ALTER SCHEMA ADD REPLICA, tetapkan nilai untuk opsi replica_kms_key. Tabel CMEK dapat dikueri di region tujuan.

    Semua tabel CMEK di region tujuan menggunakan replica_kms_key yang sama, terlepas dari kunci yang digunakan di region sumber.

Membuat replika dengan CMEK

Contoh berikut membuat replika di region us-west1 dengan kumpulan nilai replica_kms_key. Untuk kunci CMEK, berikan izin akun layanan BigQuery untuk mengenkripsi dan mendekripsi.

-- Create a replica in the secondary region.
ALTER SCHEMA my_dataset
ADD REPLICA `us-west1`
OPTIONS(location='us-west1',
  replica_kms_key='my_us_west1_kms_key_name');

Batasan CMEK

Mereplikasi set data dengan CMEK yang diterapkan tunduk pada batasan berikut:

  • Anda tidak dapat memperbarui kunci Cloud KMS yang direplikasi setelah replika dibuat.

  • Anda tidak dapat memperbarui nilai default_kms_key di set data sumber setelah replika set data dibuat.

  • Jika replica_kms_key yang diberikan tidak valid di wilayah tujuan, set data tidak akan direplikasi.

Langkah selanjutnya