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.
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:
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 dengan, 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 terlebih dahulu harus dipromosikan menjadi replika utama.
- Tabel yang dimasukkan melalui Datastream ke BigQuery menggunakan Change Data Capture tidak didukung.
- 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.
- Bandwidth replikasi untuk operasi penyalinan awal dibatasi hingga 1 GB/detik fisik per project per pasangan benua. Replikasi dengan kecepatan ini tidak dijamin.
- 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.
Perilaku resource
Replika utama dan sekunder memiliki perbedaan berikut:
Replika utama region 1 | Replika sekunder region 2 | Notes |
---|---|---|
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.
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 Anda perlukan untuk 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 multi-region US
, lalu menambahkan replika bernama us-east4
:
-- Create the primary replica in the US multi-region. CREATE SCHEMA my_dataset OPTIONS(location='us'); -- Create a replica in the secondary region. ALTER SCHEMA my_dataset ADD REPLICA `us-east4` 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 lowongan ke wilayah sekunder di setelan kueri. Lihat artikel BigQuery menentukan lokasi.
Contoh berikut mempromosikan replika us-east4
menjadi replika 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 memberikanreplica_kms_key
yang dibuat di region set data replika saat menggunakan pernyataan DDLALTER SCHEMA ADD REPLICA
.Jika set data sumber belum memiliki nilai yang ditetapkan untuk
default_kms_key
, Anda tidak dapat menetapkanreplica_kms_key
.Jika Anda menggunakan rotasi kunci Cloud KMS di salah satu (atau keduanya) dari
default_kms_key
ataureplica_kms_key
, set data replika masih dapat dikueri setelah rotasi kunci.- Rotasi kunci di region utama akan mengupdate versi kunci hanya 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 mengubah semua tabel di replika sekunder (sebelumnya replika utama) menjadi versi kunci baru.
- Jika versi kunci yang ditetapkan pada tabel dalam replika utama sebelum rotasi kunci dihapus, tabel yang masih menggunakan versi kunci yang ditetapkan sebelum rotasi kunci tidak dapat dikueri hingga versi kunci diupdate. 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 opsireplica_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.- Tambahkan nilai
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.Tabel terenkripsi CMEK yang direplikasi ke region tujuan akan terlihat, tetapi tidak dapat dikueri atau ditulis karena CMEK sumber tidak dikenali di region tujuan.
Langkah selanjutnya
- Pelajari cara menggunakan reservasi BigQuery.
- Pelajari fitur keandalan BigQuery.