Mengkloning cluster database di satu server menggunakan cadangan Cloud Storage

Halaman ini menunjukkan cara meng-clone cluster database di satu server menggunakan cadangan Cloud Storage.

Alur kerja berikut menjelaskan langkah-langkah cloning:

  1. Konfigurasikan file pgbackrest.conf untuk mengakses cadangan Cloud Storage.
  2. Gunakan perintah pgBackRest untuk memverifikasi bahwa cadangan sumber dapat diakses.
  3. Gunakan perintah pgBackRest untuk memulihkan cadangan ke server target.

Sebelum memulai

  • Akses ke jalur lengkap bucket Cloud Storage tempat cadangan cluster database sumber Anda berada. Ini adalah jalur yang sama dengan yang Anda gunakan saat membuat resource BackupPlan untuk cluster database sumber.
  • Cluster database AlloyDB Omni target server tunggal dibuat. Untuk informasi selengkapnya tentang cara menginstal AlloyDB Omni di Kubernetes, lihat Menginstal AlloyDB Omni.
  • Pastikan Anda login ke database sebagai pengguna postgres.

Mengonfigurasi file pgBackRest di server target

Konfigurasikan file pgBackRest untuk memungkinkan cluster database target mengakses bucket Cloud Storage tempat cadangan sumber berada.

  1. Di server target, buka direktori alloydb-data.

  2. Buat file konfigurasi pgBackRest untuk mengakses cadangan yang disimpan di Cloud Storage:

      $ cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data-restored
      pg1-socket-path=/tmp
      pg1-user=pgbackrest
      [global]
      log-path=/obs/pgbackrest
      log-level-file=info
      repo1-type=gcs
      repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME
      repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH
      repo1-storage-ca-file=/etc/ssl/certs/ca-certificates.crt
      repo1-retention-full=9999999
      repo1-gcs-key-type=auto

    Ganti kode berikut:

    • GCS_SOURCE_BACKUP_BUCKET_NAME: nama bucket pgBackRest Cloud Storage yang Anda buat di cluster database sumber. Ini bukan URL lengkap ke bucket; jangan beri awalan nama bucket dengan gs://.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: jalur direktori tempat operator AlloyDB Omni menulis cadangan, dalam bucket Cloud Storage untuk cluster database sumber. Jalur harus absolut, dimulai dengan /.

    repo1-gcs-key-type ditetapkan ke auto untuk menggunakan akun layanan instance. Untuk informasi selengkapnya tentang opsi lainnya, lihat Opsi Jenis Kunci Repositori GCS.

Memverifikasi pencadangan sumber di server target

Login ke server target dan jalankan perintah pgBackRest untuk memverifikasi bahwa cadangan cluster database sumber dapat diakses di server target:

Docker

sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Podman

sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Ganti CONTAINER_NAME dengan nama penampung AlloyDB Omni baru—misalnya, my-omni-1.

Berikut adalah contoh respons:

    stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F

Stempel waktu dalam respons digunakan untuk memulihkan cadangan lengkap atau memulihkan dari titik waktu dari periode pemulihan.

Memulihkan cadangan di server target

Setelah Anda mengidentifikasi cadangan atau titik waktu yang ingin Anda pulihkan, jalankan perintah pgBackRest di server target. Untuk informasi selengkapnya tentang perintah ini, lihat Perintah Pemulihan.

Berikut adalah beberapa contoh perintah pemulihan pgBackRest:

  • Memulihkan dari cadangan

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
  • Memulihkan dari titik waktu

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

Menyalin data ke server target

Setelah perintah pemulihan berhasil diselesaikan, Anda dapat menyalin data dari direktori sementara /mnt/disks/pgsql/data-restored ke direktori /alloydb-data/data saat ini.

  1. Di server target, hentikan layanan database:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. Ganti nama direktori data saat ini menjadi nama lain sebagai praktik terbaik:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Ganti nama direktori sementara data-restored menjadi direktori data saat ini:

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. Perbarui nilai pg1-path dalam file postgresql.auto.conf untuk memuat data yang dipulihkan:

    vim ~/alloydb-data/data/postgresql.auto.conf
    # Verify postgresql.auto.conf.
    # Do not edit this file manually!
    # It will be overwritten by the ALTER SYSTEM command.
    # Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11
    restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"'
    recovery_target = 'immediate'
    recovery_target_action = 'promote'
    recovery_target_timeline = 'current'
  1. Di server target, mulai layanan database:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

Setelah layanan database dimulai, Anda dapat terhubung ke instance utama dan menjalankan kueri untuk memverifikasi bahwa data dipulihkan dari pencadangan. Untuk informasi selengkapnya, lihat Menghubungkan ke AlloyDB Omni di satu server.

Langkah selanjutnya