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

1. Giriş

Bu codelab'de, RPM düzenleyiciyi kullanarak AlloyDB Omni için yüksek kullanılabilirlik (HA) kümesini S3 uyumlu nesne depolama alanına yedekleyeceksiniz.

Bu codelab'de, Compute Engine sanal makinelerinde (VM) yüksek kullanılabilirlik sağlayan bir küme oluşturmak için RPM Orchestrator kullanarak GCE VM'lerinde AlloyDB Omni yüksek kullanılabilirlik kümesi dağıtma adlı codelab'deki küme kullanılır. Bu codelab'de, sanal makinelerden birine S3 ile uyumlu bir nesne depolama sunucusu ekleyeceksiniz. Verileri yedeklemek ve kümeyi sunucudan geri yüklemek için YK kümesi için nesne depolama sunucusunu kullanırsınız.

Cloud Shell, kontrol sanal makinesine bağlanır. Kontrol sanal makinesi Ansible ve MinIO'yu çalıştırır. psql, HAProxy sanal makinelerinin sanal IP'si üzerinden kümeye bağlanır. Veritabanı VM'leri, yedekleri 9000 numaralı bağlantı noktasından MinIO'ya gönderir.

Ön koşullar

  • Faturalandırmanın etkin olduğu bir Google Cloud projesi.
  • HA codelab'inde listelenen IAM rolleri.
  • Linux komutları ve SQL hakkında temel düzeyde bilgi

Neler öğreneceksiniz?

  • Yedeklemeler için S3 uyumlu bir nesne depolama sunucusunu yükleme ve çalıştırma
  • Yedeklemeleri S3 uyumlu depolama alanına yazan bir yedekleme planı oluşturma
  • İsteğe bağlı yedekleme oluşturma
  • Bir kümeyi yedekten ve belirli bir zamana geri yükleme

Gerekenler

2. Kurulum ve Gereksinimler

  1. Bu adımda, RPM Orchestrator kullanarak GCE VM'lerinde AlloyDB Omni yüksek kullanılabilirlik kümesi dağıtma adlı codelab'i kullanarak bir HA kümesi oluşturursunuz. Aşağıdaki adımları tamamlayın. Codelab'den zaten bir kümeniz varsa sonraki adıma geçin.
  2. Not: Bu aşamada "Kaynakları temizle" adımını uygulamayın. Bu adımı codelab'in sonunda gerçekleştireceksiniz.
  3. Bu codelab'e dönün

3. Kümeye bağlanma ve örneklenmiş veriler ekleme

Bu adımda, küme ayarlarını kontrol VM'sine yüklersiniz. Ardından kümeye bağlanır ve örneklenmiş veriler içeren bir tablo eklersiniz.

  1. Kontrol sanal makinesine bağlı değilseniz Cloud Shell'den bağlanın:
    gcloud compute ssh "$CLUSTER-control" --zone="$ZONE" --project="$PROJECT"
    
    CLUSTER, ZONE ve PROJECT değişkenleri, RPM Orchestrator kullanarak GCE sanal makinelerinde AlloyDB Omni yüksek kullanılabilirlik kümesi dağıtma adlı codelab'deki Dağıtım için sanal makineleri hazırlama adımından alınır. Cloud Shell'de bu değişkenler yoksa bunları tekrar ayarlayın.
  2. Kontrol VM'sinde ana dizininize geçin ve ortam değişkenlerini yükleyin. Ardından, küme adını ve SSH kullanıcısını ortam dosyasına ekleyin:
    cd ~
    source /tmp/cluster.conf
    cat >> ~/.codelab.env <<EOF
    export CLUSTER="$cluster"
    export SSH_USER="$service_account"
    EOF
    source ~/.codelab.env
    env | grep -E '^(CLUSTER|SSH_USER|VIRTUAL_IP)='
    
    Çıkışta CLUSTER, SSH_USER ve VIRTUAL_IP gösterildiğini doğrulayın. Not: Daha sonra kontrol sanal makinesine tekrar bağlanırsanız devam etmeden önce cd ~ ve source ~/.codelab.env komutlarını çalıştırın.
  3. Bağlantı ayarlarını ortam dosyasına ekleyin. read komutu şifre istediğinde postgres kullanıcısının şifresini girin. Bu şifreyi, RPM Orchestrator kullanarak GCE VM'lerinde AlloyDB Omni yüksek kullanılabilirlik kümesi dağıtma adlı codelab'deki Bootstrap AlloyDB Omni Cluster (AlloyDB Omni kümesini başlatma) adımında ayarlarsınız.
    cat >> ~/.codelab.env <<'EOF'
    export PATH="/usr/pgsql-18/bin:$PATH"
    export PGHOST="$VIRTUAL_IP"
    export PGUSER="postgres"
    EOF
    read -rsp "Password of the postgres user: " PGPASSWORD; echo
    printf 'export PGPASSWORD=%q\n' "$PGPASSWORD" >> ~/.codelab.env
    source ~/.codelab.env
    env | grep -E '^(PGHOST|PGUSER|PGPASSWORD)='
    
  4. Tablo oluşturma ve 1.000 satır ekleme:
    psql <<'SQL'
    CREATE TABLE public.orders (
      id integer PRIMARY KEY,
      item text NOT NULL,
      created_at timestamptz NOT NULL DEFAULT pg_catalog.now()
    );
    INSERT INTO public.orders (id, item)
    SELECT g, 'item-' || g FROM pg_catalog.generate_series(1, 1000) AS g;
    SQL
    
  5. Satırları sayın:
    psql -c "SELECT pg_catalog.count(*) FROM public.orders;"
    
    Çıkışın 1000 döndürdüğünü doğrulayın.

4. S3 ile uyumlu nesne depolama alanını yükleme ve çalıştırma

Bu adımda, kontrol VM'sine bir MinIO sunucusu yükleyen bir Ansible playbook'u yazacaksınız. Oyun kitabı, yedeklemeler için bucket ve kullanıcı da oluşturur ve veritabanı sanal makinelerinin MinIO'ya bağlanabildiğinden emin olur. Bu adımdaki tüm komutları kontrol sanal makinesinde çalıştırın.

  1. Kontrol VM'sinde, depolama ayarlarını ortam dosyasına ekleyin. openssl komutları rastgele şifreler oluşturur.
    MD=http://metadata.google.internal/computeMetadata/v1/instance
    S3_IP=$(curl -s -H "Metadata-Flavor: Google" "$MD/network-interfaces/0/ip")
    cat >> ~/.codelab.env <<EOF
    export S3_IP="$S3_IP"
    export S3_HOST="$CLUSTER-control"
    export S3_BUCKET="alloydb-backups"
    export S3_REGION="us-east-1"
    export MINIO_ROOT_USER="s3admin"
    export MINIO_ROOT_PASSWORD="$(openssl rand -hex 16)"
    export S3_ACCESS_KEY_ID="alloydb-backup"
    export S3_SECRET_ACCESS_KEY="$(openssl rand -hex 16)"
    export MINIO_URL="https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z"
    export MC_URL="https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z"
    EOF
    source ~/.codelab.env
    echo "$S3_HOST $S3_IP"
    
    Çıkışta kontrol sanal makinesinin adının ve dahili IP adresinin (ör. my-cluster-control 10.1.0.2) gösterildiğinden emin olun. Veritabanı VM'leri, MinIO'ya bağlanmak için bu ana makine adını ve IP adresini kullanır. Sanal makinenin meta veri sunucusu IP adresini verir. Daha fazla bilgi için VM meta verileri dokümanlarına bakın.MINIO_URL ve MC_URL değerleri, MinIO sunucusunun ve MinIO istemcisinin (mc) indirme URL'leridir.
  2. Kontrol sanal makinesine gerekli community.crypto Ansible koleksiyonunu yükleyin:
    ansible-galaxy collection install community.crypto
    
  3. s3_server.yaml başucu kitabını oluşturun:
    cat > s3_server.yaml <<EOF
    - name: Install and run MinIO on the control VM
      hosts: localhost
      connection: local
      become: true
      gather_facts: false
      tasks:
        - name: Create MinIO directories
          ansible.builtin.file:
            path: "{{ item }}"
            state: directory
            mode: "0755"
          loop:
            - /var/lib/minio/data
            - /var/lib/minio/certs
    
        - name: Download MinIO server and client
          ansible.builtin.get_url:
            url: "{{ item.url }}"
            dest: "{{ item.dest }}"
            mode: "0755"
          loop:
            - url: "$MINIO_URL"
              dest: /usr/local/bin/minio
            - url: "$MC_URL"
              dest: /usr/local/bin/mc
    
        - name: Generate MinIO TLS private key
          community.crypto.openssl_privatekey:
            path: /var/lib/minio/certs/private.key
            size: 2048
            mode: "0600"
    
        - name: Generate MinIO certificate signing request
          community.crypto.openssl_csr_pipe:
            privatekey_path: /var/lib/minio/certs/private.key
            common_name: "$S3_HOST"
            subject_alt_name:
              - "DNS:$S3_HOST"
              - "DNS:$S3_BUCKET.$S3_HOST"
              - "DNS:localhost"
              - "IP:127.0.0.1"
              - "IP:$S3_IP"
          register: minio_csr
    
        - name: Generate self-signed MinIO TLS certificate
          community.crypto.x509_certificate:
            path: /var/lib/minio/certs/public.crt
            csr_content: "{{ minio_csr.csr }}"
            privatekey_path: /var/lib/minio/certs/private.key
            provider: selfsigned
            selfsigned_not_after: "+365d"
            mode: "0644"
    
        - name: Create MinIO systemd service unit
          ansible.builtin.copy:
            dest: /etc/systemd/system/minio.service
            mode: "0600"
            content: |
              [Unit]
              Description=MinIO Object Storage
              After=network.target
    
              [Service]
              Environment="MINIO_ROOT_USER=$MINIO_ROOT_USER"
              Environment="MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD"
              Environment="MINIO_DOMAIN=$S3_HOST"
              ExecStart=/usr/local/bin/minio server /var/lib/minio/data --certs-dir /var/lib/minio/certs
              Restart=on-failure
    
              [Install]
              WantedBy=multi-user.target
    
        - name: Start and enable MinIO service
          ansible.builtin.systemd_service:
            name: minio
            daemon_reload: true
            state: started
            enabled: true
    
        - name: Add storage host names to /etc/hosts on the control VM
          ansible.builtin.lineinfile:
            path: /etc/hosts
            line: "$S3_IP $S3_HOST $S3_BUCKET.$S3_HOST"
            state: present
    
        - name: Wait for MinIO health endpoint
          ansible.builtin.uri:
            url: "https://$S3_HOST:9000/minio/health/live"
            ca_path: /var/lib/minio/certs/public.crt
            status_code: 200
          register: minio_health
          until: minio_health.status == 200
          retries: 6
          delay: 5
    
        - name: Create backup bucket and user in MinIO
          ansible.builtin.command:
            argv: "{{ item }}"
          loop:
            - - /usr/local/bin/mc
              - --insecure
              - alias
              - set
              - s3repo
              - "https://$S3_HOST:9000"
              - "$MINIO_ROOT_USER"
              - "$MINIO_ROOT_PASSWORD"
            - - /usr/local/bin/mc
              - --insecure
              - mb
              - --ignore-existing
              - "s3repo/$S3_BUCKET"
            - - /usr/local/bin/mc
              - --insecure
              - admin
              - user
              - add
              - s3repo
              - "$S3_ACCESS_KEY_ID"
              - "$S3_SECRET_ACCESS_KEY"
            - - /usr/local/bin/mc
              - --insecure
              - admin
              - policy
              - attach
              - s3repo
              - readwrite
              - --user
              - "$S3_ACCESS_KEY_ID"
          become: false
          no_log: true
    
    - name: Configure database VMs for MinIO
      hosts: primary_instance_nodes
      become: true
      gather_facts: false
      vars:
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      tasks:
        - name: Set SELinux to permissive mode
          ansible.builtin.command:
            cmd: setenforce 0
    
        - name: Add storage host names to /etc/hosts
          ansible.builtin.lineinfile:
            path: /etc/hosts
            line: "$S3_IP $S3_HOST $S3_BUCKET.$S3_HOST"
            state: present
    
        - name: Verify storage host resolution
          ansible.builtin.getent:
            database: hosts
            key: "$S3_BUCKET.$S3_HOST"
    
        - name: Verify connection to MinIO
          ansible.builtin.uri:
            url: "https://$S3_HOST:9000/minio/health/live"
            validate_certs: false
            status_code: 200
    EOF
    
    MINIO_DOMAIN değişkeni, MinIO'nun sanal ana makine tarzı istekleri kabul etmesine olanak tanır. RPM düzenleyici, yedeklemeleri yazmak için alloydb-backup kullanıcısını kullanır. readwrite politikası, MinIO'nun yerleşik bir politikasıdır.
  4. Başucu kitabını çalıştırın:
    ansible-playbook s3_server.yaml -i deployment_spec.yaml
    
    PLAY RECAP çıkışında localhost ve her veritabanı sanal makinesi için failed=0 gösterildiğini doğrulayın.
  5. Paketin mevcut olduğunu doğrulayın:
    mc --insecure ls s3repo
    
    Çıkışta alloydb-backups/ grubunun gösterildiğini doğrulayın.

5. Yedekleme planı oluştur

Yedekleme planı, bir kümenin yedeklerinin depolama konumunu, zaman çizelgesini ve saklama süresini içerir. Bu adımda, MinIO paketi için bir yedekleme planı oluşturursunuz.

  1. Kontrol sanal makinesinde yedekleme playbook'u ve durum playbook'u oluşturun. Secret, BackupPlan ve Backup kaynakları için yedekleme playbook'unu kullanıyorsunuz. Bir kaynağın durumunu göstermek için durum kılavuzunu kullanırsınız.
    cat > backup.yaml <<EOF
    - name: Manage AlloyDB Omni backups
      hosts: localhost
      roles:
        - role: google.alloydbomni_orchestrator.backup
    EOF
    cat > status.yaml <<EOF
    - name: Get resource status
      hosts: localhost
      roles:
        - role: google.alloydbomni_orchestrator.status
    EOF
    
  2. S3 kimlik bilgileri için bir Secret kaynağı oluşturun. Ardından kaynağı uygulayın:
    S3_KEY_ID_B64=$(printf '%s' "$S3_ACCESS_KEY_ID" | base64 -w 0)
    S3_KEY_B64=$(printf '%s' "$S3_SECRET_ACCESS_KEY" | base64 -w 0)
    cat > s3_secret.yaml <<EOF
    Secret:
      metadata:
        name: s3-backup-secret
      spec:
        type: Opaque
        data:
          access-key-id: "$S3_KEY_ID_B64"
          access-key: "$S3_KEY_B64"
    EOF
    ansible-playbook backup.yaml -i deployment_spec.yaml \
        -e resource_spec=s3_secret.yaml
    
    data bölümündeki anahtar adları access-key-id ve access-key olmalıdır. BackupPlan kaynağını uygulamadan önce Secret kaynağını uygulamanız gerekir.
  3. BackupPlan kaynağını oluşturun ve ardından kaynağı uygulayın:
    cat > backup_plan.yaml <<EOF
    BackupPlan:
      metadata:
        name: s3-backup-plan
      spec:
        dbclusterRef: $CLUSTER
        backupLocation:
          type: S3
          s3Options:
            bucket: $S3_BUCKET
            key: /backups
            endpoint: https://$S3_HOST:9000
            region: $S3_REGION
            secretRef:
              name: s3-backup-secret
            caBundle:
              - |
    $(sed 's/^/            /' /var/lib/minio/certs/public.crt)
    EOF
    ansible-playbook backup.yaml -i deployment_spec.yaml \
        -e resource_spec=backup_plan.yaml
    
    key değeri, paketteki yedeklerin yoludur. Bu yol, eğik çizgiyle (/) başlamalıdır. caBundle alanı, S3 depolama sunucusunun sertifikasını doğrulayan PEM kodlu CA sertifikasını içerir.
  4. Yedekleme planının hazır olduğunu doğrulayın:
    ansible-playbook status.yaml -i deployment_spec.yaml \
        -e resource_type=BackupPlan -e resource_name=s3-backup-plan
    
    phase alanında Ready ifadesinin gösterildiğini doğrulayın. Aşama Ready değilse bir dakika bekleyip komutu tekrar çalıştırın.
  5. Yedek plan oluşturulduğunda RPM düzenleyici, otomatik olarak ilk tam yedeklemeyi başlatır. İsteğe bağlı yedekleme oluşturmadan önce bu ilk yedeklemenin tamamlandığını doğrulayın:
    ansible-playbook status.yaml -i deployment_spec.yaml \
        -e resource_type=Backup
    
    İlk yedekleme aşamasının başarılı olduğunu doğrulayın.

6. İsteğe bağlı yedekleme oluşturma

Bu adımda, kümenin isteğe bağlı bir yedeğini oluşturursunuz.

  1. Kontrol sanal makinesinde Backup kaynağını oluşturun. Ardından kaynağı uygulayın:
    cat > create_backup.yaml <<EOF
    Backup:
      metadata:
        name: s3-backup-1
      spec:
        backupPlanRef: s3-backup-plan
        dbclusterRef: $CLUSTER
    EOF
    ansible-playbook backup.yaml -i deployment_spec.yaml \
        -e resource_spec=create_backup.yaml
    
    backupPlanRef alanı, yedekleme planının adıdır. dbclusterRef alanı, kümenin adıdır.
  2. Yedeklemenin tamamlandığını doğrulayın:
    ansible-playbook status.yaml -i deployment_spec.yaml \
        -e resource_type=Backup -e resource_name=s3-backup-1
    
    phase alanında Succeeded ifadesinin gösterildiğini doğrulayın. Aşama Succeeded değilse bir dakika bekleyip komutu tekrar çalıştırın.
  3. Yedekleme dosyalarının pakette olduğunu doğrulayın:
    mc --insecure tree "s3repo/$S3_BUCKET"
    
    Çıktıda db klasörünü içeren bir backup klasörünün gösterildiğini doğrulayın.

7. Kümeyi yedekten geri yükleme

RPM orkestrasyonu, bir kümeyi yerinde geri yükler. Bu adımda bir tabloyu silip yedeklemeden geri yüklersiniz. Ardından, isteğe bağlı olarak kümeyi belirli bir zamana geri yükleyebilirsiniz.

Dikkat: Geri yükleme işlemi, veritabanı kümesindeki tüm verilerin üzerine yazar.

Yedekten geri yükle

  1. Kontrol VM'sinde orders tablosunu silin. Ardından satırları sayın:
    psql -c "DROP TABLE public.orders;"
    psql -c "SELECT pg_catalog.count(*) FROM public.orders;"
    
    İkinci komutun hata vererek başarısız olduğunu doğrulayın. Hata mesajında, ilişkinin mevcut olmadığı gösteriliyor. Örneğin, "HATA: "orders" tablosu mevcut değil"
  2. Geri yükleme başucu kitabını oluşturun:
    cat > restore.yaml <<EOF
    - name: Restore AlloyDB Omni cluster
      hosts: localhost
      roles:
        - role: google.alloydbomni_orchestrator.restore
    EOF
    
  3. s3-backup-1 yedeği için Restore kaynağı oluşturun. Ardından kaynağı uygulayın:
    cat > restore_backup.yaml <<EOF
    Restore:
      metadata:
        name: s3-restore-1
      spec:
        sourceDBCluster: $CLUSTER
        backup: s3-backup-1
    EOF
    ansible-playbook restore.yaml -i deployment_spec.yaml \
        -e resource_spec=restore_backup.yaml
    
  4. Geri yükleme işleminin tamamlandığını doğrulayın:
    ansible-playbook status.yaml -i deployment_spec.yaml \
        -e resource_type=Restore -e resource_name=s3-restore-1
    
    phase alanında ProvisionSucceeded ifadesinin gösterildiğini doğrulayın. Aşama ProvisionSucceeded değilse bir dakika bekleyip komutu tekrar çalıştırın.
  5. Geri yüklenen tablodaki satırları sayın:
    psql -c "SELECT pg_catalog.count(*) FROM public.orders;"
    
    Çıkışta 1000 gösterildiğini doğrulayın.

(İsteğe bağlı) Belirli bir zamana geri yükleme

Belirli bir noktaya geri yükleme işleminde yedekleme ve arşivlenmiş işlem günlüğü (WAL) kullanılır. Küme, yedekleme planının kurtarma penceresinde herhangi bir zamana geri yüklenebilir.

Hedef zamanla ilgili kurallar

Hedef zamanın değerini ve biçimini seçmek için tüm kurallara uymanız gerekir:

  • UTC'de RFC 3339 biçimini kullanın: YYYY-MM-DDThh:mm:ssZ. Örneğin, 2026-06-19T14:30:00Z, 19 Haziran 2026'da 14:30:00 UTC'dir. Tarih ve saat, T harfiyle ayrılır. Z harfi, UTC'yi gösterir.
  • Geçmiş bir zamanı kullanma
  • BackupPlan CRD'nin recoveryWindow alanının begin değerinden sonraki bir zamanı kullanın.

Geçerli saati RFC 3339 biçiminde göstermek için şu komutu çalıştırın:

date -u +%Y-%m-%dT%H:%M:%SZ

Yerel saati bu biçime dönüştürmek için date komutuna yerel saatin UTC farkını ekleyin. Örneğin, aşağıdaki komut UTC+02:00 saatinde 19 June 2026 üzerindeki 16:30:00 değerini değiştirir:

date -u -d "2026-06-19 16:30:00 +0200" +%Y-%m-%dT%H:%M:%SZ

Komut 2026-06-19T14:30:00Z değerini döndürür.

Kayıtlı bir zamana geri yükleme

Bu prosedürde, tabloya satırlar ekleyip bir zaman kaydedersiniz. Bir zaman kaydettiğinizde, veritabanının tamamen sağlam olduğu (tam olarak 1.500 satır içeren) anı işaretlersiniz. Ardından satırları siler ve kümeyi kaydedilen zamana geri yüklersiniz.

  1. Tabloya 500 satır ekleyin:
    psql <<'SQL'
    INSERT INTO public.orders (id, item)
    SELECT g, 'item-' || g FROM pg_catalog.generate_series(1001, 1500) AS g;
    SQL
    
  2. Zamanı kaydedin. Tabloda şu anda 1.500 satır var.
    sleep 5
    PITR_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
    echo "export PITR_TIME=$PITR_TIME" >> ~/.codelab.env
    echo "$PITR_TIME"
    sleep 5
    
    Çıkışın YYYY-MM-DDThh:mm:ssZ biçiminde bir zaman gösterdiğini doğrulayın (ör. 2026-10-05T11:16:02Z).
  3. Yanlışlıkla veri silme işlemini simüle etmek için tablodan satırları silin. Ardından yeni bir WAL dosyası başlatın:
    psql -c "DELETE FROM public.orders WHERE id > 1000;"
    psql -c "SELECT pg_catalog.count(*) FROM public.orders;"
    psql -c "SELECT pg_catalog.pg_switch_wal();"
    
    count sorgusunun 1000 gösterdiğini doğrulayın. pg_switch_wal işlevi, sunucunun yeni bir WAL dosyası başlatmasını sağlar. Ardından sunucu, değişikliklerinizi içeren WAL dosyasını arşivleyebilir.
  4. Yedekleme planının kurtarma penceresinin, kaydedilen zamanı içerdiğini doğrulayın:
    test -n "$PITR_TIME" || { echo "PITR_TIME is not set. Run step 2 again."; exit 1; }
    echo "$PITR_TIME"
    ansible-playbook status.yaml -i deployment_spec.yaml \
        -e resource_type=BackupPlan -e resource_name=s3-backup-plan
    
    PITR_TIME değerinin, recoveryWindow alanının begin değerinden sonra geldiğini doğrulayın.
  5. Kayıtlı süre için Restore kaynağı oluşturun. Ardından kaynağı uygulayın:
    cat > restore_pitr.yaml <<EOF
    Restore:
      metadata:
        name: s3-restore-pitr
      spec:
        sourceDBCluster: $CLUSTER
        pointInTime: "$PITR_TIME"
    EOF
    ansible-playbook restore.yaml -i deployment_spec.yaml \
        -e resource_spec=restore_pitr.yaml
    
  6. Geri yükleme işleminin tamamlandığını doğrulayın:
    ansible-playbook status.yaml -i deployment_spec.yaml \
        -e resource_type=Restore -e resource_name=s3-restore-pitr
    
    phase alanında ProvisionSucceeded ifadesinin gösterildiğini doğrulayın. Aşama ProvisionSucceeded değilse bir dakika bekleyip komutu tekrar çalıştırın.
  7. Satırları sayın:
    psql -c "SELECT pg_catalog.count(*) FROM public.orders;"
    
    Çıkışta 1500 gösterildiğini doğrulayın.

8. Temizleme

Google Cloud hesabınızın ücretlendirilmesini önlemek için bu codelab'in ve RPM Orchestrator kullanarak GCE VM'lerinde AlloyDB Omni yüksek kullanılabilirlik kümesi dağıtma codelab'inin kaynaklarını silin. Önce yedekleme kaynaklarını, ardından kümeyi ve bilgi işlem ortamını silin.

  1. Kontrol VM'sinde silme playbook'unu oluşturun:
    cat > delete.yaml <<EOF
    - name: Delete AlloyDB Omni resources
      hosts: localhost
      roles:
        - role: google.alloydbomni_orchestrator.delete
    EOF
    
  2. Yedekleri listeleyin:
    ansible-playbook status.yaml -i deployment_spec.yaml -e resource_type=Backup
    
    Çıkışta s3-backup-1 yedeklemenin gösterildiğini doğrulayın.
  3. s3-backup-1 yedeğini silme:
    ansible-playbook delete.yaml -i deployment_spec.yaml \
        -e resource_type=Backup -e resource_name=s3-backup-1
    
  4. Yedekleme planını silme:
    ansible-playbook delete.yaml -i deployment_spec.yaml \
        -e resource_type=BackupPlan -e resource_name=s3-backup-plan
    
  5. RPM Orchestrator kullanarak GCE VM'lerinde AlloyDB Omni yüksek kullanılabilirlik kümesi dağıtma adlı codelab'deki Kaynakları temizleme adımını kullanarak kümeyi ve bilgi işlem ortamını silin. MinIO sunucusu ve içindeki yedekler kontrol sanal makinesinde bulunur. Bilgi işlem ortamını sildiğinizde hem sunucuyu hem de yedekleri silersiniz.

9. Tebrikler

Tebrikler. RPM düzenleyiciyi kullanarak AlloyDB Omni için yüksek kullanılabilirlik (HA) kümesini S3 uyumlu nesne depolama alanına yedeklediniz. Ardından, kümeyi yedeklerden geri yüklediniz.

İşlediğimiz konular

  • MinIO'yu S3 ile uyumlu nesne depolama alanı olarak yükleme ve çalıştırma
  • Yedekleme planı ve isteğe bağlı yedekleme oluşturma
  • Bir kümeyi yedekten ve belirli bir zamana geri yükleme

Daha fazla bilgi için aşağıdaki sayfalara bakın:

10. Anket

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

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