Mengkloning cluster database di Kubernetes menggunakan cadangan Cloud Storage

Pilih versi dokumentasi:

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 konfigurasi 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 backup cluster database sumber Anda disimpan. Ini adalah jalur yang sama yang Anda gunakan saat membuat resource BackupPlan untuk cluster database sumber.
  • Buat cluster database AlloyDB Omni target. Untuk mengetahui 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 untuk sementara. Setelah pemulihan selesai, konfigurasi ulang parameter livenessProbe.

  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 ini 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 pada langkah sebelumnya.

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

Mengonfigurasi file pgBackRest

Konfigurasi file pgBackRest untuk mengizinkan 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 mencakup 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 memperbarui 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 menambahkan awalan gs:// ke nama bucket.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: jalur direktori tempat AlloyDB Omni Operator 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 lain, lihat Opsi Jenis Kunci Repositori GCS.

Memverifikasi cadangan sumber di cluster database target

Jalankan perintah pgBackRest untuk memverifikasi bahwa cadangan 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 penuh atau memulihkan dari titik waktu dalam periode pemulihan.

Memulihkan cadangan di cluster database target

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

Berikut 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 diselesaikan, 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.

Mengonfigurasi cluster database

Setelah meng-clone cluster database, konfigurasikan spesifikasi cluster database Anda. Yang paling penting, jangan lupa aktifkan parameter livenessProbe dengan perintah berikut:

    kubectl patch dbcluster DBCLUSTER_FILENAME --type merge -p '{"spec":{"primarySpec":{"availabilityOptions":{"livenessProbe":"Enabled"}}}}'

Langkah berikutnya