Mencadangkan dan memulihkan AlloyDB Omni RPM ke penyimpanan yang kompatibel dengan S3 menggunakan pgBackRest

1. Pengantar

Codelab ini menunjukkan cara mengonfigurasi pgBackRest untuk mencadangkan dan memulihkan deployment RPM AlloyDB Omni menggunakan penyimpanan objek yang kompatibel dengan S3.

Catatan: Dalam codelab ini, Anda akan men-deploy biner MinIO mandiri di VM untuk bertindak sebagai endpoint penyimpanan yang kompatibel dengan S3, ringan, dan lokal untuk tujuan tutorial dan pengujian. Untuk workload produksi, selalu gunakan solusi penyimpanan yang kompatibel dengan S3 atau penyimpanan objek cloud yang didukung dan dipertahankan secara aktif.

Prasyarat

  • Akses ke Project Google Cloud dan Cloud Shell dari Konsol Cloud.
  • Google Cloud SDK (gcloud) diinstal dan dikonfigurasi.

Yang akan Anda pelajari

  • Cara menyiapkan VM Compute Engine untuk RPM AlloyDB Omni.
  • Cara menyiapkan server penyimpanan objek yang kompatibel dengan S3 lokal di VM.
  • Cara mengonfigurasi pgBackRest untuk menggunakan penyimpanan objek yang kompatibel dengan S3 sebagai repositori cadangan.
  • Cara melakukan, mencantumkan, dan memverifikasi cadangan.
  • Cara memulihkan data dari cadangan.

Yang Anda butuhkan

  • Dapatkan link URL ke RPM AlloyDB Omni. Link dikirim ke email Anda yang mencakup server URL repositori. Lakukan inisialisasi variabel lingkungan berikut agar URL siap digunakan selama codelab.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • Terminal yang berfungsi dengan akses ke Google Cloud. Anda dapat menggunakan Cloud Shell untuk tujuan ini.

2. Penyiapan dan Persyaratan

Penyiapan project

Buat Project Google Cloud

  1. Di Konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.

Mulai Cloud Shell

Meskipun Anda dapat mengoperasikan Google Cloud dari jarak jauh menggunakan laptop, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di cloud.

Ikon untuk mengaktifkan Cloud Shell

  1. Buka Konsol Google Cloud, lalu klik ikon Cloud Shell di toolbar kanan atas.Anda juga dapat membuka Cloud Shell dengan salah satu cara berikut:
    • Jika Anda menggunakan Konsol Google Cloud, tekan G, lalu S.
    • Klik link ini.

Biasanya, perlu waktu beberapa saat untuk menyediakan dan terhubung ke lingkungan. Setelah operasi ini selesai, Anda akan melihat sesuatu yang mirip dengan berikut ini:

Terminal Google Cloud Shell yang menunjukkan bahwa lingkungan telah terhubung{: width="624"}

3. Membuat VM Compute Engine

Di bagian ini, Anda akan membuat satu virtual machine (VM) Compute Engine (GCE) menggunakan alat command line gcloud. Anda menggunakan image Rocky Linux 9, yang sepenuhnya kompatibel dengan RPM AlloyDB Omni.

  1. Tentukan variabel lingkungan untuk project ID, nama VM, jenis mesin, zona, dan region Anda.
    export PROJECT="your-project-id"
    export INSTANCE_NAME="alloydb-omni-pgbackrest"
    export MACHINE_TYPE="e2-standard-4"
    export ZONE="us-central1-c"
    export REGION="us-central1"
    
  2. Login menggunakan pengguna akun Google Cloud Anda, dan konfigurasi project default.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Buat aturan firewall untuk mengizinkan koneksi SSH ke VM Anda.
    gcloud compute firewall-rules create allow-ssh-alloydb-omni \
        --project=$PROJECT \
        --direction=INGRESS \
        --action=allow \
        --rules=tcp:22 \
        --source-ranges="0.0.0.0/0"
    
  4. Karena VM dibuat tanpa alamat IP publik, konfigurasi gateway Cloud Router dan Cloud NAT agar VM dapat mengakses repositori paket eksternal dan mendownload software yang diperlukan.
    gcloud compute routers create alloydb-omni-router \
        --project=$PROJECT \
        --network=default \
        --region=$REGION
    
    gcloud compute routers nats create alloydb-omni-nat \
        --project=$PROJECT \
        --router=alloydb-omni-router \
        --region=$REGION \
        --nat-all-subnet-ip-ranges \
        --auto-allocate-nat-external-ips
    
  5. Pastikan jaringan VPC Anda memiliki rute gateway internet default yang valid. Di beberapa lingkungan bersama atau uji coba, rute default terkadang dihapus oleh skrip pembersihan. Rute ini diperlukan agar Cloud NAT meneruskan traffic keluar ke internet.
    gcloud compute routes create default-internet-route \
        --project=$PROJECT \
        --network=default \
        --destination-range=0.0.0.0/0 \
        --next-hop-gateway=default-internet-gateway
    
  6. Buat instance VM Compute Engine dengan Rocky Linux 9 dan persistent disk seimbang 20 GB. Untuk meningkatkan keamanan, gunakan flag --no-address agar VM tidak diberi alamat IP publik.
    gcloud compute instances create $INSTANCE_NAME \
        --project=$PROJECT \
        --zone=$ZONE \
        --machine-type=$MACHINE_TYPE \
        --image-family=rocky-linux-9 \
        --image-project=rocky-linux-cloud \
        --boot-disk-size=20GB \
        --boot-disk-type=pd-balanced \
        --no-address
    
  7. Setelah VM dibuat, verifikasi status VM.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. Menyiapkan penyimpanan objek yang kompatibel dengan S3

Di bagian ini, Anda akan terhubung ke VM, menyiapkan lingkungan, dan menyiapkan server penyimpanan objek yang kompatibel dengan S3 lokal (minio) beserta klien S3 (mc) untuk menghosting bucket cadangan Anda.

  1. Hubungkan ke VM melalui SSH menggunakan Identity-Aware Proxy (IAP). Karena VM tidak memiliki alamat IP publik, gcloud akan otomatis melakukan tunneling koneksi SSH melalui IAP.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Instal paket policycoreutils-python-utils agar kebijakan SELinux dapat dikonfigurasi nanti jika diperlukan.
    sudo dnf install -y policycoreutils-python-utils
    
  3. Download biner server yang kompatibel dengan S3 (minio).
    curl -L -o minio \
        https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z
    chmod +x minio
    sudo mv minio /usr/local/bin/
    
  4. Buat direktori data untuk server penyimpanan objek.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. Mulai server yang kompatibel dengan S3 di latar belakang dengan contoh kredensial. Perhatikan bahwa kunci rahasia harus memiliki panjang minimal 8 karakter.
    export MINIO_ROOT_USER="s3admin"
    export MINIO_ROOT_PASSWORD="s3password"
    
    nohup sudo env MINIO_ROOT_USER="$MINIO_ROOT_USER" \
        MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \
        /usr/local/bin/minio server /var/lib/s3-storage/data \
        --console-address ":9001" \
        > s3-server.log 2>&1 &
    
  6. Pastikan server yang kompatibel dengan S3 sedang berjalan.
    ps aux | grep minio
    
  7. Download dan instal klien S3 (mc) untuk mengelola bucket.
    curl -L -o mc \
        https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z
    chmod +x mc
    sudo mv mc /usr/local/bin/
    
  8. Konfigurasi alias klien S3 (s3repo) dan buat bucket bernama alloydb-backups.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. Menginstal AlloyDB Omni

Di bagian ini, Anda akan menginstal dan mengonfigurasi AlloyDB Omni.

  1. Tentukan variabel lingkungan di VM untuk direktori data, URL repositori AlloyDB Omni, dan sandi yang kuat untuk pengguna administrator PostgreSQL postgres. Ganti URL dengan URL yang Anda terima dari formulir pendaftaran.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Catatan: Penerusan sandi menggunakan variabel lingkungan di command line (misalnya, PGPASSWORD=$PGPASSWORD) digunakan di sini untuk menyederhanakan codelab, tetapi dapat mengekspos sandi dalam listingan proses. Dalam produksi, gunakan metode yang lebih aman seperti file .pgpass atau pengelola rahasia.
  2. Buat direktori data tempat AlloyDB Omni akan menyimpan file databasenya.
    sudo mkdir -p $PGDATA
    
  3. Konfigurasi repositori YUM di VM Anda dengan membuat file konfigurasi repositori.
    sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF
    [alloydbomni]
    name=alloydbomni
    baseurl=$ALLOYDB_OMNI_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=1
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
  4. Perbarui cache YUM.
    sudo yum makecache
    
  5. Instal paket RPM AlloyDB Omni versi 18.
    sudo dnf install -y alloydbomni18
    
  6. Lakukan inisialisasi instance database AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Nonaktifkan sementara mode pemberlakuan SELinux untuk mempermudah penyiapan, sesuai praktik codelab standar.
    sudo setenforce 0
    
  8. Siapkan instance database AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. Aktifkan dan mulai layanan systemd AlloyDB Omni.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. Pastikan layanan AlloyDB Omni aktif dan berjalan dengan baik.
    sudo systemctl status alloydbomni18
    

6. Mengonfigurasi pgBackRest

Di bagian ini, Anda akan menginstal pgBackRest dari repositori Umum AlloyDB Omni, mengonfigurasi /etc/pgbackrest/pgbackrest.conf untuk menggunakan bucket penyimpanan objek yang kompatibel dengan S3 sebagai repositori cadangan, dan mengaktifkan pengarsipan WAL di AlloyDB Omni.

  1. Tentukan variabel lingkungan di VM untuk URL repositori Umum AlloyDB Omni Anda. Ganti URL dengan URL yang Anda terima dari formulir pendaftaran.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. Konfigurasi repositori YUM pgBackRest dan instal pgbackrest-2.58.0.
    sudo tee /etc/yum.repos.d/pgbackrest.repo <<EOF
    [pgbackrest]
    name=Google Alloydb Omni Orchestrator
    baseurl=$ALLOYDB_OMNI_COMMON_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
    sudo dnf install -y pgbackrest-2.58.0
    
  3. Buat direktori spool dan log untuk pgBackRest, lalu tetapkan kepemilikan kepada pengguna postgres.
    sudo mkdir -p /var/log/pgbackrest
    sudo mkdir -p /var/lib/pgbackrest
    
    sudo chown -R postgres:postgres /var/log/pgbackrest
    sudo chown -R postgres:postgres /var/lib/pgbackrest
    
  4. Buat /etc/pgbackrest/pgbackrest.conf dan konfigurasi izin file yang ketat.
    sudo mkdir -p /etc/pgbackrest/conf.d
    
    sudo tee /etc/pgbackrest/pgbackrest.conf <<EOF
    [global]
    spool-path=/var/lib/pgbackrest
    lock-path=/var/lib/pgbackrest
    
    # S3 Repository details
    repo1-type=s3
    repo1-s3-endpoint=http://localhost:9000
    repo1-s3-bucket=alloydb-backups
    repo1-s3-key=s3admin
    repo1-s3-key-secret=s3password
    repo1-s3-region=us-east-1
    repo1-s3-uri-style=path
    repo1-path=/pgbackrest
    
    # Retention policy
    repo1-retention-full=3
    repo1-retention-full-type=count
    repo1-retention-diff=16
    
    # Force immediate checkpoint during backup start
    start-fast=y
    
    # Logging
    log-path=/var/log/pgbackrest
    log-level-console=info
    log-level-file=info
    
    # Compression
    compress-type=zst
    
    # Asynchronous WAL archiving
    archive-async=y
    archive-push-queue-max=1024MB
    archive-get-queue-max=256MB
    archive-missing-retry=y
    
    [global:archive-push]
    process-max=2
    
    [global:archive-get]
    process-max=2
    
    [omni]
    pg1-user=postgres
    pg1-socket-path=/tmp
    pg1-path=$PGDATA
    EOF
    
    sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
    sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
    
  5. Lakukan inisialisasi stanza pgBackRest sebagai pengguna postgres.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Pastikan stanza-create command end: completed successfully ditampilkan di output.
  6. Konfigurasi parameter pengarsipan AlloyDB Omni menggunakan psql.
    sudo -u postgres /usr/lib/postgresql/18/bin/psql \
        -c "ALTER SYSTEM SET archive_mode = 'on';" \
        -c "ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=omni archive-push %p';" \
        -c "ALTER SYSTEM SET wal_level = 'replica';" \
        -c "ALTER SYSTEM SET max_wal_senders = 10;"
    
  7. Mulai ulang layanan AlloyDB Omni untuk menerapkan perubahan pengarsipan.
    sudo systemctl restart alloydbomni18
    
  8. Verifikasi integritas dan konektivitas konfigurasi pgBackRest.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Pastikan check command end: completed successfully ditampilkan di output.

7. Lakukan Pencadangan

Di bagian ini, Anda akan menggunakan pgBackRest untuk melakukan pencadangan penuh dan pencadangan diferensial database AlloyDB Omni ke penyimpanan objek yang kompatibel dengan S3.

  1. Picu pencadangan penuh menggunakan pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. Memicu pencadangan diferensial menggunakan pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Catatan: Jenis cadangan lain yang didukung mencakup incr (inkremental).

8. Mencantumkan dan Memverifikasi Cadangan

Di bagian ini, Anda akan mencantumkan cadangan dan memverifikasi bahwa cadangan tersebut berhasil diselesaikan.

  1. Cantumkan cadangan menggunakan perintah pgbackrest info.
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Konfirmasi bahwa output menampilkan status: ok beserta informasi pencadangan untuk setiap perintah pencadangan yang Anda jalankan:
    • Pencadangan penuh: full backup: F (misalnya, 20260908-093545F)
    • Pencadangan perbedaan: diff backup: F_D (misalnya, 20260908-093545F_20260908-094016D)
  2. Verifikasi file cadangan yang disimpan di bucket menggunakan klien S3 (mc).
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    Anda akan melihat backup, archive, dan stanza.info dalam output.

9. Memulihkan Data dari Cadangan

Di bagian ini, Anda akan menghentikan layanan database AlloyDB Omni dan memulihkan data dari cadangan tertentu menggunakan pgbackrest.

Perhatian: Pemulihan akan menghentikan database Anda dan menimpa semua data database Anda.

  1. Tentukan variabel lingkungan untuk ID cadangan yang ingin Anda pulihkan. Ganti nilai dengan ID cadangan yang ditampilkan di output pgbackrest info.
    export BACKUPID="20260908-093545F"
    
  2. Hentikan layanan AlloyDB Omni dan pastikan layanan tersebut tidak aktif.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Pastikan output menampilkan Active: inactive.
  3. Jalankan pgbackrest restore dengan opsi --delta untuk memulihkan database dari cadangan yang dipilih.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Pastikan restore command end: completed successfully ditampilkan di output.
  4. Mulai layanan AlloyDB Omni dan verifikasi bahwa layanan tersebut aktif dan berjalan.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Pastikan output menampilkan Active: active (running).

10. Pembersihan dan Survei

Setelah menyelesaikan codelab, Anda dapat membersihkan resource Google Cloud untuk menghindari timbulnya biaya yang tidak diinginkan.

  1. Putuskan koneksi dari sesi SSH di VM untuk kembali ke terminal Cloud Shell lokal Anda.
    exit
    
  2. Hapus instance VM Compute Engine.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. Hapus aturan firewall yang dibuat untuk akses SSH.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Hapus gateway Cloud NAT dan Cloud Router.
    gcloud compute routers nats delete alloydb-omni-nat --router=alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    gcloud compute routers delete alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    
  5. Hapus rute kustom.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Selamat

Selamat, Anda telah menyelesaikan codelab ini! Anda berhasil mengonfigurasi pgBackRest untuk mencadangkan dan memulihkan deployment RPM AlloyDB Omni menggunakan penyimpanan objek yang kompatibel dengan S3.

Yang telah kita bahas

  • Cara menyiapkan VM Compute Engine untuk RPM AlloyDB Omni.
  • Cara menyiapkan bucket penyimpanan objek yang kompatibel dengan S3.
  • Cara mengonfigurasi pgBackRest dengan repositori yang kompatibel dengan S3.
  • Cara melakukan, membuat daftar, dan memverifikasi pencadangan penuh dan diferensial.
  • Cara memulihkan data dari cadangan menggunakan pgBackRest.

Untuk mengetahui informasi selengkapnya, lihat Ringkasan AlloyDB Omni.

12. Survei

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membaca dan menyelesaikan latihannya