pgBackRest'i kullanarak AlloyDB Omni RPM'yi S3 uyumlu depolama alanına yedekleme ve geri yükleme

1. Giriş

Bu codelab'de, S3 uyumlu nesne depolama alanı kullanarak AlloyDB Omni RPM dağıtımını yedeklemek ve geri yüklemek için pgBackRest'in nasıl yapılandırılacağı gösterilmektedir.

Not: Bu codelab'de, eğitim ve test amaçlarıyla yerel, hafif bir S3 uyumlu depolama uç noktası olarak işlev görmesi için sanal makineye bağımsız bir MinIO ikili programı dağıtırsınız. Üretim iş yükleri için her zaman desteklenen ve etkin olarak bakımı yapılan S3 uyumlu bir depolama çözümü veya bulut nesne depolama kullanın.

Ön koşullar

  • Cloud Console'dan Google Cloud projesine ve Cloud Shell'e erişim.
  • Google Cloud SDK (gcloud) yüklü ve yapılandırılmış olmalıdır.

Neler öğreneceksiniz?

  • AlloyDB Omni RPM için Compute Engine sanal makinesi oluşturma
  • Sanal makinede yerel S3 uyumlu nesne depolama sunucusu ayarlama.
  • pgBackRest'i, S3 uyumlu nesne depolama alanını yedek depo olarak kullanacak şekilde yapılandırma
  • Yedeklemeleri gerçekleştirme, listeleme ve doğrulama
  • Yedeklenmiş verileri geri yükleme

Gerekenler

  • AlloyDB Omni RPM'lerine URL bağlantısı edinme Bağlantılar, depo URL'si sunucusunu içeren e-posta adresinize gönderilir. URL'nin codelab sırasında kullanıma hazır olması için aşağıdaki ortam değişkenini başlatın.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • Google Cloud'a erişimi olan çalışan bir terminal. Bu amaçla Cloud Shell'i kullanabilirsiniz.

2. Kurulum ve Gereksinimler

Proje kurulumu

Google Cloud projesi oluşturma

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.

Cloud Shell'i başlatma

Google Cloud'u dizüstü bilgisayarınızdan uzaktan çalıştırabilirsiniz ancak bu codelab'de bulutta çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Cloud Shell'i etkinleştirme simgesi

  1. Google Cloud Console'u açın ve sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın.Cloud Shell'i aşağıdaki yöntemlerden biriyle de açabilirsiniz:

Ortamın temel hazırlığı ve bağlantı kurulması genellikle birkaç dakika sürer. Bu işlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Ortamın bağlandığını gösteren Google Cloud Shell terminali{: width="624"}

3. Compute Engine sanal makinesini oluşturma

Bu bölümde, gcloud komut satırı aracını kullanarak tek bir Compute Engine (GCE) sanal makinesi (VM) oluşturacaksınız. AlloyDB Omni RPM'leriyle tamamen uyumlu olan bir Rocky Linux 9 görüntüsü kullanıyorsunuz.

  1. Proje kimliğiniz, VM adınız, makine türünüz, bölgeniz ve alt bölgeniz için ortam değişkenleri tanımlayın.
    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. Google Cloud hesabınızın hesap kullanıcısıyla oturum açın ve varsayılan projeyi yapılandırın.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Sanal makinenize SSH bağlantılarına izin vermek için bir güvenlik duvarı kuralı oluşturun.
    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. Sanal makine genel IP adresi olmadan oluşturulduğundan, sanal makinenin harici paket depolarına erişmesine ve gerekli yazılımları indirmesine izin vermek için bir Cloud Router ve Cloud NAT ağ geçidi yapılandırın.
    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. VPC ağınızın geçerli bir varsayılan internet ağ geçidi rotasına sahip olduğundan emin olun. Bazı paylaşılan veya deneme alanı ortamlarında, varsayılan rotalar temizleme komut dosyaları tarafından zaman zaman kaldırılır. Bu rota, Cloud NAT'in giden trafiği internete yönlendirmesi için gereklidir.
    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. Rocky Linux 9 ve 20 GB dengeli kalıcı disk ile Compute Engine sanal makine örneğini oluşturun. Güvenliği artırmak için --no-address işaretini kullanarak sanal makineye genel IP adresi atanmamasını sağlayın.
    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. Sanal makine oluşturulduktan sonra durumunu doğrulayın.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. S3 ile uyumlu nesne depolama alanı ayarlama

Bu bölümde, sanal makinenize bağlanır, ortamı hazırlar ve yedekleme paketinizi barındırmak için S3 istemcisi (mc) ile birlikte yerel bir S3 uyumlu nesne depolama sunucusu (minio) oluşturursunuz.

  1. Identity-Aware Proxy (IAP) kullanarak SSH üzerinden sanal makineye bağlanın. Sanal makinenin herkese açık IP adresi olmadığından gcloud, SSH bağlantısını IAP üzerinden otomatik olarak tüneller.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Gerekirse SELinux politikasının daha sonra yapılandırılabilmesi için policycoreutils-python-utils paketini yükleyin.
    sudo dnf install -y policycoreutils-python-utils
    
  3. S3 ile uyumlu sunucu ikilisini (minio) indirin.
    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. Nesne depolama sunucusu için bir veri dizini oluşturun.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. S3 ile uyumlu sunucuyu örnek kimlik bilgileriyle arka planda başlatın. Gizli anahtarın en az 8 karakter uzunluğunda olması gerektiğini unutmayın.
    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. S3 uyumlu sunucunun çalıştığını doğrulayın.
    ps aux | grep minio
    
  7. Paketleri yönetmek için S3 istemcisini (mc) indirip yükleyin.
    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. S3 istemci takma adını (s3repo) yapılandırın ve alloydb-backups adlı bir paket oluşturun.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. AlloyDB Omni'yi yükleme

Bu bölümde AlloyDB Omni'yi yükleyip yapılandıracaksınız.

  1. VM'de veri dizini, AlloyDB Omni deponuzun URL'si ve PostgreSQL postgres yönetici kullanıcısı için güçlü bir şifreye yönelik ortam değişkenlerini tanımlayın. URL'yi kayıt formundan aldığınız URL ile değiştirin.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Not: Komut satırında ortam değişkenlerini kullanarak şifre iletme (ör. PGPASSWORD=$PGPASSWORD) bu codelab'de basitlik için kullanılmıştır ancak şifreyi işlem listelerinde gösterebilir. Üretimde, .pgpass dosyası veya Secret Manager gibi daha güvenli yöntemler kullanın.
  2. AlloyDB Omni'nin veritabanı dosyalarını depolayacağı veri dizinini oluşturun.
    sudo mkdir -p $PGDATA
    
  3. Depo yapılandırma dosyasını oluşturarak sanal makinenizde YUM deposunu yapılandırın.
    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. YUM önbelleğini güncelleyin.
    sudo yum makecache
    
  5. AlloyDB Omni RPM paketinin 18. sürümünü yükleyin.
    sudo dnf install -y alloydbomni18
    
  6. AlloyDB Omni veritabanı örneğini başlatın.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Standart codelab uygulamalarına uygun olarak, kurulumu kolaylaştırmak için SELinux zorlama modunu geçici olarak devre dışı bırakın.
    sudo setenforce 0
    
  8. AlloyDB Omni veritabanı örneğini hazırlayın.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. AlloyDB Omni systemd hizmetini etkinleştirin ve başlatın.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. AlloyDB Omni hizmetinin etkin olduğunu ve başarıyla çalıştığını doğrulayın.
    sudo systemctl status alloydbomni18
    

6. pgBackRest'i yapılandırma

Bu bölümde, AlloyDB Omni Common deposundan pgBackRest'i yükleyecek, /etc/pgbackrest/pgbackrest.conf'yı S3 ile uyumlu nesne depolama alanı paketinizi yedek depo olarak kullanacak şekilde yapılandıracak ve AlloyDB Omni'de WAL arşivlemeyi etkinleştireceksiniz.

  1. AlloyDB Omni Common depo URL'niz için VM'de bir ortam değişkeni tanımlayın. URL'yi kayıt formundan aldığınız URL ile değiştirin.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. pgBackRest YUM deposunu yapılandırın ve pgbackrest-2.58.0'ı yükleyin.
    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. pgBackRest için biriktirme ve günlük dizinlerini oluşturun ve sahipliği postgres kullanıcısına atayın.
    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. Sıkı dosya izinleri /etc/pgbackrest/pgbackrest.conf oluşturun ve yapılandırın.
    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. pgBackRest stanza'yı postgres kullanıcısı olarak başlatın.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Çıkışta stanza-create command end: completed successfully ifadesinin gösterildiğini doğrulayın.
  6. psql kullanarak AlloyDB Omni arşivleme parametrelerini yapılandırın.
    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. Arşivleme değişikliklerini uygulamak için AlloyDB Omni hizmetini yeniden başlatın.
    sudo systemctl restart alloydbomni18
    
  8. pgBackRest yapılandırma bütünlüğünü ve bağlantısını doğrulayın.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Çıkışta check command end: completed successfully ifadesinin gösterildiğini doğrulayın.

7. Yedekleme gerçekleştirme

Bu bölümde, AlloyDB Omni veritabanınızın S3 uyumlu nesne depolama alanına tam ve farklı yedeklemesini yapmak için pgBackRest'i kullanacaksınız.

  1. pgbackrest kullanarak tam yedeklemeyi tetikleyin.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. pgbackrest kullanarak farklı bir yedekleme tetikleyin.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Not: Diğer desteklenen yedekleme türleri arasında incr (artımlı) yer alır.

8. Yedekleri Listeleme ve Doğrulama

Bu bölümde, yedeklemeleri listeleyip başarıyla tamamlandıklarını doğrulayacaksınız.

  1. pgbackrest info komutunu kullanarak yedekleri listeleyin.
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Çıktıda, çalıştırdığınız her yedekleme komutu için yedekleme bilgilerinin yanı sıra status: ok gösterildiğini doğrulayın:
    • Tam yedekleme: full backup: F (ör. 20260908-093545F)
    • Fark yedeği: diff backup: F_D (örneğin, 20260908-093545F_20260908-094016D)
  2. S3 istemcisini (mc) kullanarak pakette depolanan yedek dosyaları doğrulayın.
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    Çıkışta backup, archive ve stanza.info değerlerini görmeniz gerekir.

9. Verileri Yedekten Geri Yükleme

Bu bölümde, AlloyDB Omni veritabanı hizmetini durduracak ve pgbackrest kullanarak belirli bir yedeklemeden verileri geri yükleyeceksiniz.

Dikkat: Geri yükleme işlemi veritabanınızı durdurur ve tüm veritabanı verilerinizin üzerine yazar.

  1. Geri yüklemek istediğiniz yedek kimliği için bir ortam değişkeni tanımlayın. Değeri, pgbackrest info çıktınızda gösterilen yedekleme kimliğiyle değiştirin.
    export BACKUPID="20260908-093545F"
    
  2. AlloyDB Omni hizmetini durdurun ve devre dışı olduğunu doğrulayın.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Çıkışta Active: inactive gösterildiğini doğrulayın.
  3. Veritabanını seçili yedeklemeden geri yüklemek için pgbackrest restore komutunu --delta seçeneğiyle çalıştırın.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Çıkışta restore command end: completed successfully ifadesinin gösterildiğini doğrulayın.
  4. AlloyDB Omni hizmetini başlatın ve etkin olup olmadığını kontrol edin.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Çıkışta Active: active (running) gösterildiğini doğrulayın.

10. Temizleme ve Anket

Codelab'i tamamladıktan sonra, istenmeyen ücretlerin alınmasını önlemek için Google Cloud kaynaklarını temizleyebilirsiniz.

  1. Yerel Cloud Shell terminalinize dönmek için sanal makinedeki SSH oturumunuzun bağlantısını kesin.
    exit
    
  2. Compute Engine sanal makine örneğini silin.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. SSH erişimi için oluşturulan güvenlik duvarı kuralını silin.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Bulut NAT ağ geçidini ve Cloud Router'ı silin.
    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. Özel rotayı silin.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Tebrikler

Codelab'i tamamladığınız için tebrikler. S3 uyumlu nesne depolama alanını kullanarak bir AlloyDB Omni RPM dağıtımını yedeklemek ve geri yüklemek için pgBackRest'i başarıyla yapılandırdınız.

İşlediğimiz konular

  • AlloyDB Omni RPM için Compute Engine sanal makinesi oluşturma
  • S3 ile uyumlu bir nesne depolama paketi oluşturma
  • pgBackRest'i S3 uyumlu bir depo ile yapılandırma
  • Tam ve farklı yedeklemeleri gerçekleştirme, listeleme ve doğrulama
  • pgBackRest kullanarak yedeklenmiş verileri geri yükleme

Daha fazla bilgi için AlloyDB Omni'ye genel bakış başlıklı makaleyi inceleyin.

12. Anket

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve alıştırmaları tamamlayın