Mengkloning cluster database di Kubernetes menggunakan cadangan Cloud Storage

Halaman ini menunjukkan cara meng-clone cluster database di Kubernetes menggunakan cadangan Cloud Storage dari cluster database AlloyDB Omni.

Alur kerja berikut menjelaskan langkah-langkah yang digunakan untuk meng-clone:

  1. Buat dan terapkan file manifes DBCluster di cluster database target dengan parameter livenessProbe dinonaktifkan.
  2. Buat dan konfigurasikan file pgbackrest.conf untuk mengakses cadangan Cloud Storage.
  3. Gunakan perintah pgBackRest untuk memverifikasi bahwa Anda dapat mengakses cadangan sumber.
  4. Gunakan perintah pgBackRest untuk memulihkan cadangan ke cluster database target.

Sebelum memulai

  • Pastikan Anda memiliki akses ke jalur lengkap bucket Cloud Storage tempat cadangan cluster database sumber Anda disimpan. Ini adalah jalur yang sama dengan yang Anda gunakan saat membuat resource BackupPlan untuk cluster database sumber.
  • Buat cluster database AlloyDB Omni target. Untuk informasi selengkapnya tentang cara menginstal AlloyDB Omni di Kubernetes, lihat Membuat cluster database.
  • Pastikan Anda login ke database sebagai pengguna postgres.

Membuat cluster database di cluster database target

Buat cluster database dengan menonaktifkan parameter livenessProbe sementara saat proses pemulihan selesai.

  1. Buat file manifes resource DBCluster:

      apiVersion: v1
      kind: Secret
      metadata:
        name: db-pw-DB_CLUSTER_NAME
      type: Opaque
      data:
        DB_CLUSTER_NAME: "ENCODED_PASSWORD"
      ---
      apiVersion: alloydbomni.dbadmin.goog/v1
      kind: DBCluster
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        primarySpec:
          availabilityOptions:
            livenessProbe: "Disabled"
          adminUser:
            passwordRef:
              name: db-pw-DB_CLUSTER_NAME
          resources:
            cpu: CPU_COUNT
            memory: MEMORY_SIZE
            disks:
            - name: DataDisk
              size: DISK_SIZE
              storageClass: standard
    

    Ganti kode berikut:

    • DB_CLUSTER_NAME: nama cluster database ini—misalnya, my-db-cluster.

    • ENCODED_PASSWORD: sandi login database untuk peran pengguna postgres default, yang dienkode sebagai string base64—misalnya, Q2hhbmdlTWUxMjM= untuk ChangeMe123.

    • CPU_COUNT: jumlah CPU yang tersedia untuk setiap instance database dalam cluster database ini.

    • MEMORY_SIZE: jumlah memori per instance database dari cluster database ini. Sebaiknya tetapkan ke 8 gigabyte per CPU. Misalnya, jika Anda menetapkan cpu ke 2 sebelumnya dalam manifes ini, sebaiknya tetapkan memory ke 16Gi.

    • DISK_SIZE: ukuran disk per instance database—misalnya, 10Gi.

  2. Terapkan file manifes:

      kubectl apply -f DBCLUSTER_FILENAME

    Ganti kode berikut:

    • DBCLUSTER_FILENAME: nama file manifes DBCluster yang dibuat di langkah sebelumnya.

Gunakan perintah kubectl describe untuk memverifikasi bahwa resource cluster database berada dalam status READY.

Mengonfigurasi file pgBackRest

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

  1. Di cluster database target, temukan detail pod cluster database:

      kubectl get pod -l "alloydbomni.internal.dbadmin.goog/dbcluster=<var>DB_CLUSTER_NAME</var>, alloydbomni.internal.dbadmin.goog/task-type=database"

    Respons menyertakan nama pod database cluster.

  2. Login ke pod:

      kubectl exec -ti DATABASE_POD_NAME  -- /bin/bash

    Ganti kode berikut:

    • DATABASE_POD_NAME: nama pod cluster database dari langkah sebelumnya.
  3. Hentikan pod sebelum mengupdate file konfigurasi pgBackRest:

      supervisorctl.par stop postgres
  4. Buat file konfigurasi pgBackRest untuk mengakses cadangan yang disimpan di Cloud Storage:

      cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data
      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 Cloud Storage yang Anda buat saat membuat file manifes resource BackupPlan untuk 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 mengetahui informasi selengkapnya tentang opsi lainnya, lihat Opsi Jenis Kunci Repositori GCS.

Memverifikasi cadangan sumber di cluster database target

Jalankan perintah pgBackRest untuk memverifikasi bahwa pencadangan cluster database sumber dapat diakses di cluster database target.

pgbackrest --config-path=/backup --stanza=db --repo=1 info

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 cluster database target

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

Berikut adalah beberapa contoh perintah pemulihan pgBackRest:

  • Memulihkan dari cadangan

    pgbackrest --config-path=/backup --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=/backup --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

Mulai ulang pod

Setelah perintah pemulihan berhasil selesai, Anda dapat memulai proses postgres.

supervisorctl.par start postgres

Setelah proses postgres dimulai, Anda dapat terhubung ke instance utama dan menjalankan kueri untuk memverifikasi bahwa data dipulihkan dari cadangan. Untuk mengetahui informasi selengkapnya, lihat Menghubungkan ke AlloyDB Omni yang berjalan di Kubernetes.

Langkah selanjutnya