Memulihkan cluster AlloyDB Omni menggunakan pgBackRest

Pilih versi dokumentasi:

Halaman ini menunjukkan cara memulihkan cluster AlloyDB Omni menggunakan cadangan yang dibuat dengan pgBackRest, solusi pencadangan open source yang disertakan dengan container Docker AlloyDB Omni.

Karena AlloyDB Omni kompatibel dengan PostgreSQL, perintah dan teknik pemulihan data yang dijelaskan dalam manual pgBackRest juga berlaku untuk AlloyDB Omni. Halaman ini menunjukkan pilihan tugas pemulihan umum, dengan contoh perintah yang relevan.

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi pgBackRest agar berfungsi dengan AlloyDB Omni, lihat Menyiapkan pgBackRest untuk AlloyDB Omni.

Lihat Mencadangkan dan memulihkan di Kubernetes untuk mengetahui informasi berbasis Kubernetes.

Sebelum memulai

Sebelum mengonfigurasi AlloyDB Omni agar berfungsi dengan pgBackrest, Anda harus menginstal dan menjalankan AlloyDB Omni di server yang Anda kontrol.

  • Server database target, yang menjalankan versi utama AlloyDB Omni yang sama dengan cadangan yang ingin Anda pulihkan. Untuk mengetahui informasi selengkapnya tentang cara menginstal AlloyDB Omni, lihat Menginstal AlloyDB Omni.

  • Repository cadangan pgBackRest yang berisi setidaknya satu cadangan database AlloyDB Omni sumber.

  • Ruang disk kosong yang cukup di server target untuk menyimpan database yang dipulihkan.

Ringkasan

Untuk melakukan pemulihan AlloyDB Omni menggunakan pgBackRest, jalankan perintah pgbackrest restore. Parameter yang Anda berikan ke perintah bervariasi bergantung pada situasi Anda.

Secara umum, Anda menjalankan perintah pgbackrest restore dengan flag yang memberikan informasi berikut:

  • Lokasi file pgbackrest.conf Anda.
  • Nama repositori cadangan pgBackRest yang ingin Anda pulihkan. Repositori ini diberi nama dan ditentukan dalam file pgbackrest.conf.
  • Lokasi pada sistem file lokal untuk menulis data yang dipulihkan.
  • ID cadangan atau titik waktu tertentu yang ingin Anda pulihkan.

Saat menjalankan perintah pgbackrest restore yang di-container, ingatlah untuk menggunakan jalur sistem file dari sudut pandang container. Misalnya, jalur ke direktori data AlloyDB Omni Anda selalu /var/lib/postgresql/data, di mana pun lokasinya di server host Anda. Untuk mengetahui informasi selengkapnya, lihat Catatan tentang jalur sistem file.

Melakukan pemulihan point-in-time

Contoh ini memulihkan data dari repositori pgBackRest, dengan menentukan titik waktu tertentu yang akan dipulihkan. Jika Anda telah menentukan beberapa repositori dalam file pgbackrest.conf lingkungan target, pgBackRest akan memilih repositori yang akan dipulihkan berdasarkan ketersediaan, perkiraan kecepatan, dan faktor lainnya.

Contoh ini mengasumsikan hal berikut:

  • Anda memiliki file pgbackrest.conf yang terletak di level teratas direktori data AlloyDB Omni target Anda. Hal ini membuat file tersedia untuk pgbackrest yang di-container sebagai /var/lib/postgresql/data.

  • Anda telah mengaktifkan pencadangan berkelanjutan dengan konfigurasi pgBackRest Anda.

  1. Di lingkungan target, lakukan pemulihan PITR, dengan menentukan stempel waktu yang akan dipulihkan:

    Docker

    docker exec CONTAINER_NAME pgbackrest \
      --config-path=/var/lib/postgresql/data \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/var/lib/postgresql/data/data-RESTORED \
      --target="TIMESTAMP" \
      restore

    Ganti kode berikut:

    • CONTAINER_NAME: nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya—misalnya, my-omni.

    • STANZA: stanza konfigurasi, yang ditentukan oleh file pgbackrest.conf, untuk diterapkan pada pemulihan ini—misalnya, omni.

    • TIMESTAMP: waktu untuk memulihkan—misalnya, 2024-02-22 19:50:00.

    Podman

    podman exec CONTAINER_NAME pgbackrest \
      --config-path=/var/lib/postgresql/data \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/var/lib/postgresql/data/data-RESTORED \
      --target="TIMESTAMP" \
      restore

    Ganti kode berikut:

    • CONTAINER_NAME: nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya—misalnya, my-omni.

    • STANZA: stanza konfigurasi, yang ditentukan oleh file pgbackrest.conf, untuk diterapkan pada pemulihan ini—misalnya, omni.

    • TIMESTAMP: waktu untuk memulihkan—misalnya, 2024-02-22 19:50:00.

  2. Di lingkungan target, hentikan container menggunakan perintah berikut:

    Docker

    docker container stop CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
  3. Ganti nama subdirektori data dari direktori data Anda, sebagai tindakan pencegahan:

    cd DATA_DIR
    sudo mv data data-OLD

    Ganti DATA_DIR dengan jalur sistem file ke direktori data AlloyDB Omni Anda.

  4. Pindahkan data yang dipulihkan ke tempatnya, lalu bersihkan postgresql.auto.conf:

    sudo mv data-RESTORED data
    sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
  5. Mulai container AlloyDB Omni dengan server database:

    Docker

    docker container start CONTAINER_NAME

    Podman

    podman container start CONTAINER_NAME

Sekarang Anda dapat terhubung ke database menggunakan psql dan mengonfirmasi bahwa data telah dipulihkan seperti yang Anda harapkan. Jika ya, Anda dapat menghapus salinan data-OLD dari subdirektori data yang Anda buat sebelumnya.

Untuk mengetahui informasi selengkapnya tentang PITR di pgBackRest, lihat Point-in-Time Recovery. Untuk mengetahui informasi selengkapnya tentang menyiapkan file pgbackrest.conf untuk digunakan dengan AlloyDB Omni, lihat Menyiapkan pgBackRest untuk AlloyDB Omni.

Opsi lain

Perintah pgbackrest restore sangat fleksibel, dengan berbagai opsi dan fitur yang dapat Anda kontrol dengan meneruskan berbagai opsi command line. Contoh ini meliputi:

  • Membatasi pemulihan hanya ke file yang diubah.
  • Memulihkan hanya database yang dipilih.

Untuk panduan lengkap tentang cara melakukan pemulihan di pgBackRest, lihat Pemulihan.