Pemulihan dari bencana (disaster recovery) yang terkelola

Dokumen ini memberikan ringkasan tentang pemulihan dari bencana yang dikelola BigQuery dan cara menerapkannya untuk data dan workload Anda.

Ringkasan

BigQuery mendukung skenario pemulihan dari bencana (disaster recovery) jika terjadi pemadaman layanan total region. Pemulihan dari bencana BigQuery mengandalkan replikasi set data lintas region untuk mengelola failover penyimpanan. Setelah membuat replika set data di region sekunder, Anda dapat mengontrol perilaku failover untuk komputasi dan penyimpanan guna mempertahankan kelangsungan bisnis selama pemadaman layanan. Setelah failover, Anda dapat mengakses kapasitas komputasi (slot) dan set data replika di region yang dipromosikan. Pemulihan dari bencana hanya didukung dengan edisi Enterprise Plus.

Pemulihan dari bencana terkelola melakukan failover yang keras saat failover dimulai. Dalam failover paksa, replika reservasi dan set data di region sekunder segera dipromosikan ke region utama, meskipun region utama sebelumnya tidak aktif, tanpa menunggu replikasi data yang tidak direplikasi. Oleh karena itu, kehilangan data dapat terjadi selama hard failover. Setiap tugas yang meng-commit data di region sumber sebelum nilai replika replication_time mungkin perlu dijalankan kembali di region tujuan setelah failover.

Untuk mengaktifkan pemulihan dari bencana, Anda harus membuat reservasi edisi Enterprise Plus di region utama, yang merupakan region tempat set data sebelum failover. Kapasitas komputasi standby di region yang disambungkan disertakan dalam reservasi Enterprise Plus. Kemudian, Anda melampirkan set data ke reservasi ini untuk mengaktifkan failover bagi set data tersebut. Anda hanya dapat melampirkan set data ke reservasi jika set data diisi ulang dan memiliki pasangan lokasi primer dan sekunder yang sama dengan reservasi. Setelah set data ditambahkan ke reservasi failover, hanya reservasi Enterprise Plus yang dapat membaca atau menulis ke set data tersebut, dan Anda tidak dapat melakukan promosi replikasi lintas region pada set data tersebut. Untuk mengetahui informasi selengkapnya tentang reservasi, lihat Pengantar pengelolaan beban kerja.

Kapasitas komputasi region utama Anda akan segera tersedia di region sekunder setelah failover. Ketersediaan ini berlaku untuk dasar pengukuran reservasi Anda, baik saat digunakan maupun tidak.

Anda harus secara aktif memilih untuk menggagalkan sebagai bagian dari pengujian atau sebagai respons terhadap bencana yang nyata. Anda tidak boleh gagal lebih dari sekali dalam jangka waktu 10 menit. Dalam skenario replikasi data, pengisian ulang mengacu pada proses pengisian replika set data dengan data historis yang sudah ada sebelum replika dibuat atau menjadi aktif. Set data harus menyelesaikan pengisian ulangnya sebelum Anda dapat beralih ke set data.

Diagram berikut menunjukkan arsitektur pemulihan dari bencana yang terkelola:

Arsitektur pemulihan dari bencana (disaster recovery) yang terkelola.

Batasan

Batasan berikut berlaku untuk pemulihan dari bencana (disaster recovery) BigQuery:

  • Pemulihan dari bencana BigQuery memiliki batasan yang sama seperti replikasi set data lintas region.

  • Dukungan region didasarkan pada bucket dual-region. Anda tidak dapat mengonfigurasi pasangan region berikut:

    • Multi-region us-central1 - us
    • Multi-region us-west1 - us
    • Multi-region eu-west1 - eu
    • Multi-region eu-west4 - eu
  • Penskalaan otomatis setelah failover bergantung pada ketersediaan kapasitas komputasi di region sekunder. Hanya dasar pengukuran reservasi yang tersedia di wilayah sekunder.

  • Tampilan INFORMATION_SCHEMA.RESERVATIONS tidak memiliki detail failover.

  • Jika Anda memiliki beberapa reservasi failover dengan project administrasi yang sama, tetapi set data yang terlampir menggunakan lokasi sekunder yang berbeda, jangan gunakan satu reservasi failover dengan set data yang dilampirkan ke reservasi failover yang berbeda.

  • Jika Anda ingin mengonversi reservasi yang ada menjadi reservasi failover, reservasi yang ada tidak boleh memiliki lebih dari 1.000 tugas.

Sebelum memulai

  1. Pastikan Anda memiliki izin Pengelolaan Akses dan Identitas (IAM) bigquery.reservations.update untuk memperbarui reservasi.
  2. Pastikan Anda memiliki set data yang dikonfigurasi untuk replikasi. Untuk mengetahui informasi selengkapnya, lihat Mereplikasi set data.

Kuota

Anda harus memiliki kapasitas komputasi yang dipilih di region sekunder sebelum mengonfigurasi reservasi failover. Jika tidak ada kuota yang tersedia di region sekunder, Anda tidak dapat mengonfigurasi reservasi. Untuk mengetahui informasi lebih lanjut, lihat Kuota dan batas.

Harga

Mengonfigurasi pemulihan dari bencana terkelola memerlukan paket harga berikut:

  • Kapasitas komputasi: Anda harus membeli edisi Enterprise Plus.

  • Replikasi turbo: Pemulihan dari bencana bergantung pada replikasi Turbo selama replikasi. Anda akan dikenai biaya berdasarkan byte fisik dan per GB fisik yang direplikasi. Untuk mengetahui informasi lebih lanjut, lihat Harga Cloud Storage.

  • Penyimpanan: Byte penyimpanan di region sekunder ditagih dengan harga yang sama seperti byte penyimpanan di region utama. Untuk mengetahui informasi selengkapnya, lihat Harga penyimpanan.

Pelanggan hanya diwajibkan untuk membayar kapasitas komputasi di region utama. Kapasitas komputasi sekunder (berdasarkan dasar pengukuran reservasi) tersedia di region sekunder tanpa biaya tambahan. Slot tidak ada aktivitas tidak dapat menggunakan kapasitas komputasi sekunder kecuali jika reservasi gagal diselesaikan.

Jika perlu melakukan pembacaan yang sudah tidak berlaku di region sekunder, Anda dapat membeli kapasitas komputasi Enterprise Plus tambahan di region sekunder.

Membuat atau mengubah reservasi Enterprise Plus

Sebelum melampirkan set data ke reservasi, Anda harus membuat reservasi Enterprise Plus atau mengubah reservasi yang ada dan mengonfigurasinya untuk pemulihan dari bencana (disaster recovery).

Membuat pemesanan

Pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di menu navigasi, klik Pengelolaan kapasitas, lalu klik Buat reservasi.

  3. Di kolom Nama pemesanan, masukkan nama untuk pemesanan.

  4. Dalam daftar Lokasi, pilih lokasi.

  5. Dalam daftar Edisi, pilih edisi Enterprise Plus.

  6. Pada daftar Pemilih ukuran pemesanan maksimum, pilih ukuran pemesanan maksimum.

  7. Opsional: Di kolom Slot dasar pengukuran, masukkan jumlah slot dasar pengukuran untuk pemesanan.

    Jumlah slot penskalaan otomatis yang tersedia ditentukan dengan mengurangi nilai Slot dasar pengukuran dari nilai Ukuran reservasi maksimum. Misalnya, jika Anda membuat pemesanan dengan 100 slot dasar pengukuran dan ukuran pemesanan maksimum 400, pemesanan Anda memiliki 300 slot penskalaan otomatis. Untuk informasi selengkapnya tentang slot dasar pengukuran, lihat Menggunakan reservasi dengan slot dasar pengukuran dan penskalaan otomatis.

  8. Dalam daftar Lokasi sekunder, pilih lokasi sekunder.

  9. Untuk menonaktifkan berbagi slot nonaktif dan hanya menggunakan kapasitas slot yang ditentukan, klik tombol Abaikan slot nonaktif.

  10. Untuk meluaskan bagian Advanced settings, klik panah peluas .

  11. Opsional: Untuk menetapkan target konkurensi tugas secara otomatis, klik tombol Ganti konkurensi tugas target otomatis ke aktif, lalu masukkan nilai untuk Target Konkurensi Tugas. Perincian slot ditampilkan di tabel Estimasi biaya. Ringkasan reservasi ditampilkan di tabel Capacity summary.

  12. Klik Simpan.

Pemesanan baru dapat dilihat di tab Pemesanan slot.

SQL

Untuk membuat reservasi, gunakan pernyataan bahasa definisi data (DDL) CREATE RESERVATION.

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_SLOTS,
      edition = ENTERPRISE_PLUS,
      secondary_location = SECONDARY_LOCATION);
    

    Ganti kode berikut:

    • ADMIN_PROJECT_ID: project ID project administrasi yang memiliki resource reservasi.
    • LOCATION: lokasi pemesanan. Jika Anda memilih lokasi BigQuery Omni, opsi edisi Anda terbatas untuk edisi Enterprise.
    • RESERVATION_NAME: nama pemesanan.

      Nama harus diawali dan diakhiri dengan huruf kecil atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung.

    • NUMBER_OF_SLOTS: jumlah slot yang akan dialokasikan ke pemesanan. Harus ada cukup slot yang belum dialokasikan dalam komitmen. Anda tidak dapat menetapkan opsi slot_capacity dan opsi edition dalam pemesanan yang sama.
    • SECONDARY_LOCATION: lokasi sekunder reservasi. Jika terjadi pemadaman layanan, set data apa pun yang terpasang ke reservasi ini akan dialihkan ke lokasi ini.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Mengubah reservasi yang ada

Pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel navigasi, buka bagian Pengelolaan kapasitas.

  3. Klik tab Pemesanan slot.

  4. Cari pemesanan yang ingin diperbarui.

  5. Perluas opsi Actions.

  6. Klik Edit.

  7. Di kolom Lokasi sekunder, masukkan lokasi sekunder.

  8. Klik Simpan.

SQL

Untuk menambahkan atau mengubah lokasi sekunder ke reservasi, gunakan pernyataan DDL ALTER RESERVATION SET OPTIONS.

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      secondary_location = SECONDARY_LOCATION);
    

    Ganti kode berikut:

    • ADMIN_PROJECT_ID: project ID project administrasi yang memiliki resource reservasi.
    • LOCATION: lokasi pemesanan, misalnya europe-west9.
    • RESERVATION_NAME: nama pemesanan. Nama harus diawali dan diakhiri dengan huruf kecil atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung.

    • SECONDARY_LOCATION: lokasi sekunder reservasi. Jika terjadi pemadaman layanan, set data apa pun yang terpasang ke reservasi ini akan dialihkan ke lokasi ini.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Melampirkan set data ke reservasi

Guna mengaktifkan pemulihan dari bencana untuk reservasi yang dibuat sebelumnya, selesaikan langkah-langkah berikut. Set data harus sudah dikonfigurasi untuk replikasi di region utama dan sekunder yang sama dengan reservasi. Untuk mengetahui informasi selengkapnya, lihat Replikasi set data lintas region.

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di menu navigasi, klik Capacity management, lalu klik tab Slot Reservasi.

  3. Klik reservasi yang ingin Anda tambahi set data.

  4. Klik tab Pemulihan dari bencana (disaster recovery).

  5. Klik Tambahkan set data terkait.

  6. Masukkan nama set data yang ingin Anda kaitkan dengan reservasi.

  7. Klik Tambahkan.

SQL

Untuk melampirkan set data ke reservasi, gunakan pernyataan DDL ALTER SCHEMA SET OPTIONS.

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER SCHEMA
      `DATASET_NAME`
    SET OPTIONS (
      failover_reservation = RESERVATION_NAME);
    

    Ganti kode berikut:

    • DATASET_NAME: nama set data.

    • RESERVATION_NAME: nama reservasi yang ingin Anda kaitkan dengan set data.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Memulai failover

Jika terjadi pemadaman layanan regional, Anda harus melakukan failover reservasi secara manual ke lokasi yang digunakan oleh replika. Kegagalan reservasi juga akan mencakup set data terkait. Untuk menggagalkan reservasi secara manual, lakukan hal berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di menu navigasi, klik Pemulihan dari bencana (disaster recovery).

  3. Klik nama reservasi yang ingin Anda lewati.

  4. Klik Failover.

SQL

Untuk menambahkan atau mengubah lokasi sekunder ke reservasi, gunakan pernyataan DDL ALTER RESERVATION SET OPTIONS dan tetapkan is_primary ke TRUE.

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      is_primary = TRUE);
    

    Ganti kode berikut:

    • ADMIN_PROJECT_ID: project ID project administrasi yang memiliki resource reservasi.
    • LOCATION: lokasi reservasi-misalnya, europe-west9.
    • RESERVATION_NAME: nama pemesanan. Nama harus diawali dan diakhiri dengan huruf kecil atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung.

    • PRIMARY_STATUS: status boolean yang mendeklarasikan apakah reservasi adalah replika utama.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Pemantauan

Untuk menentukan status replika Anda, buat kueri tampilan INFORMATION_SCHEMA.SCHEMATA_REPLICAS. Contoh:

SELECT
  schema_name,
  replica_name,
  creation_complete,
  replica_primary_assigned,
  replica_primary_assignment_complete
FROM
  `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
  schema_name="project2.my_dataset"

Kueri berikut menampilkan tugas dari tujuh hari terakhir yang akan gagal jika set datanya adalah set data failover:

WITH
  non_epe_reservations AS (
    SELECT project_id, reservation_name
    FROM `PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS
    WHERE edition != 'ENTERPRISE_PLUS'
  )
SELECT *
FROM
  (
    SELECT job_id
    FROM
      (
        SELECT
          job_id,
          reservation_id,
          ARRAY_CONCAT(referenced_tables, [destination_table]) AS all_referenced_tables,
          query
        FROM
          `PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.JOBS
        WHERE
          creation_time
          BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
          AND CURRENT_TIMESTAMP()
      ) A,
      UNNEST(all_referenced_tables) AS referenced_table
  ) jobs
LEFT OUTER JOIN non_epe_reservations
  ON (
    jobs.reservation_id = CONCAT(
      non_epe_reservations.project_id, ':', 'LOCATION', '.', non_epe_reservations.reservation_name))
WHERE
  CONCAT(jobs.project_id, ':', jobs.dataset_id)
  IN UNNEST(
    [
      'PROJECT_ID:DATASET_ID',
      'PROJECT_ID:DATASET_ID']);

Ganti kode berikut:

  • PROJECT_ID: project ID.
  • DATASET_ID: ID set data.
  • LOCATION: lokasi.

Langkah selanjutnya