Tworzenie kopii zapasowej i przywracanie AlloyDB Omni RPM w pamięci zgodnej z S3 za pomocą pgBackRest

1. Wprowadzenie

To ćwiczenie pokazuje, jak skonfigurować pgBackRest do tworzenia kopii zapasowych i przywracania wdrożenia AlloyDB Omni RPM przy użyciu pamięci obiektowej zgodnej z S3.

Uwaga: w tym ćwiczeniu wdrożysz na maszynie wirtualnej samodzielny plik binarny MinIO, który będzie działać jako lokalny, lekki punkt końcowy pamięci zgodny z S3 na potrzeby samouczka i testowania. W przypadku obciążeń produkcyjnych zawsze używaj obsługiwanego, aktywnie utrzymywanego rozwiązania do przechowywania zgodnego z S3 lub obiektowej pamięci masowej w chmurze.

Wymagania wstępne

  • Dostęp do projektu Google Cloud i Cloud Shell z konsoli Google Cloud.
  • Zainstalowany i skonfigurowany pakiet SDK Google Cloud (gcloud).

Czego się nauczysz

  • Jak skonfigurować maszynę wirtualną Compute Engine na potrzeby AlloyDB Omni RPM.
  • Jak skonfigurować lokalny serwer obiektowej pamięci masowej zgodny z S3 na maszynie wirtualnej.
  • Jak skonfigurować pgBackRest do używania obiektowej pamięci masowej zgodnej z S3 jako repozytorium kopii zapasowych.
  • Jak tworzyć, wyświetlać i weryfikować kopie zapasowe.
  • Jak przywrócić dane z kopii zapasowej

Czego potrzebujesz

  • Uzyskaj link URL do pakietów RPM AlloyDB Omni. Linki zostaną wysłane na Twój adres e-mail, który zawiera adres URL serwera repozytorium. Zainicjuj tę zmienną środowiskową, aby adres URL był gotowy do użycia podczas ćwiczeń z programowania.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • działający terminal z dostępem do Google Cloud; Możesz do tego użyć Cloud Shell.

2. Konfiguracja i wymagania

Konfigurowanie projektu

Tworzenie projektu Google Cloud

  1. W konsoli Google Cloud na stronie wyboru projektu wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.

Uruchom Cloud Shell

Chociaż możesz zdalnie korzystać z Google Cloud na laptopie, w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

Ikona aktywowania Cloud Shell

  1. Otwórz konsolę Google Cloud i kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu.Cloud Shell możesz też otworzyć w jeden z tych sposobów:
    • Jeśli używasz konsoli Google Cloud, naciśnij G, a potem S.
    • Kliknij ten link.

Udostępnienie środowiska i połączenie się z nim może zająć kilka chwil. Po zakończeniu tej operacji zobaczysz coś podobnego do tego:

Terminal Google Cloud Shell pokazujący, że środowisko zostało połączone{: width="624"}

3. Tworzenie maszyny wirtualnej Compute Engine

W tej sekcji utworzysz jedną maszynę wirtualną Compute Engine (GCE) za pomocą narzędzia wiersza poleceń gcloud. Używasz obrazu Rocky Linux 9, który jest w pełni zgodny z pakietami RPM AlloyDB Omni.

  1. Zdefiniuj zmienne środowiskowe dla identyfikatora projektu, nazwy maszyny wirtualnej, typu maszyny, strefy i regionu.
    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. Zaloguj się jako użytkownik konta Google Cloud i skonfiguruj projekt domyślny.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Utwórz regułę zapory sieciowej, która zezwala na połączenia SSH z maszyną wirtualną.
    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. Maszyna wirtualna jest tworzona bez publicznego adresu IP, dlatego skonfiguruj router Cloud Router i bramę Cloud NAT, aby umożliwić maszynie wirtualnej dostęp do zewnętrznych repozytoriów pakietów i pobieranie wymaganego oprogramowania.
    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. Sprawdź, czy sieć VPC ma prawidłową domyślną trasę do bramy internetowej. W niektórych środowiskach współdzielonych lub testowych skrypty czyszczące czasami usuwają trasy domyślne. Ta trasa jest wymagana, aby usługa Cloud NAT mogła przekazywać ruch wychodzący do internetu.
    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. Utwórz instancję maszyny wirtualnej Compute Engine z systemem Rocky Linux 9 i zrównoważonym dyskiem stałym o pojemności 20 GB. Aby zwiększyć bezpieczeństwo, użyj flagi --no-address, aby maszynie wirtualnej nie został przypisany publiczny adres IP.
    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. Po utworzeniu maszyny wirtualnej sprawdź jej stan.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. Konfigurowanie obiektowej pamięci masowej zgodnej z S3

W tej sekcji połączysz się z maszyną wirtualną, przygotujesz środowisko i skonfigurujesz lokalny serwer obiektowej pamięci masowej zgodny z S3 (minio) wraz z klientem S3 (mc), aby hostować zasobnik kopii zapasowych.

  1. Połącz się z maszyną wirtualną przez SSH za pomocą usługi Identity-Aware Proxy (IAP). Ponieważ maszyna wirtualna nie ma publicznego adresu IP, gcloud automatycznie przekieruje połączenie SSH przez IAP.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Zainstaluj pakiet policycoreutils-python-utils, aby w razie potrzeby można było później skonfigurować zasady SELinux.
    sudo dnf install -y policycoreutils-python-utils
    
  3. Pobierz plik binarny serwera zgodnego z 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. Utwórz katalog danych dla serwera pamięci obiektowej.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. Uruchom serwer zgodny z S3 w tle, używając przykładowych danych logowania. Pamiętaj, że klucz tajny musi mieć co najmniej 8 znaków.
    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. Sprawdź, czy serwer zgodny z S3 jest uruchomiony.
    ps aux | grep minio
    
  7. Pobierz i zainstaluj klienta S3 (mc), aby zarządzać zasobnikami.
    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. Skonfiguruj alias klienta S3 (s3repo) i utwórz zasobnik o nazwie alloydb-backups.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. Zainstaluj AlloyDB Omni

W tej sekcji zainstalujesz i skonfigurujesz AlloyDB Omni.

  1. Zdefiniuj na maszynie wirtualnej zmienne środowiskowe dla katalogu danych, adresu URL repozytorium AlloyDB Omni i silnego hasła użytkownika administratora PostgreSQLpostgres. Zastąp adres URL adresem otrzymanym z formularza rejestracji.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Uwaga: przekazywanie haseł za pomocą zmiennych środowiskowych w wierszu poleceń (np. PGPASSWORD=$PGPASSWORD) jest tu używane dla uproszczenia w samouczku, ale może ujawnić hasło na listach procesów. W środowisku produkcyjnym używaj bezpieczniejszych metod, takich jak plik .pgpass lub menedżer obiektów tajnych.
  2. Utwórz katalog danych, w którym AlloyDB Omni będzie przechowywać pliki bazy danych.
    sudo mkdir -p $PGDATA
    
  3. Skonfiguruj repozytorium YUM na maszynie wirtualnej, tworząc plik konfiguracji repozytorium.
    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. Zaktualizuj pamięć podręczną YUM.
    sudo yum makecache
    
  5. Zainstaluj wersję 18 pakietu RPM AlloyDB Omni.
    sudo dnf install -y alloydbomni18
    
  6. Zainicjuj instancję bazy danych AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Tymczasowo wyłącz tryb egzekwowania SELinux, aby ułatwić konfigurację, zgodnie ze standardowymi praktykami ćwiczeń.
    sudo setenforce 0
    
  8. Przygotuj instancję bazy danych AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. Włącz i uruchom usługę AlloyDB Omni systemd.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. Sprawdź, czy usługa AlloyDB Omni jest aktywna i działa prawidłowo.
    sudo systemctl status alloydbomni18
    

6. Konfigurowanie pgBackRest

W tej sekcji zainstalujesz pgBackRest z repozytorium AlloyDB Omni Common, skonfigurujesz /etc/pgbackrest/pgbackrest.conf tak, aby używać zasobnika pamięci obiektowej zgodnego z S3 jako repozytorium kopii zapasowych, i włączysz archiwizację WAL w AlloyDB Omni.

  1. Zdefiniuj na maszynie wirtualnej zmienną środowiskową dla adresu URL wspólnego repozytorium AlloyDB Omni. Zastąp adres URL adresem otrzymanym z formularza rejestracji.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. Skonfiguruj repozytorium YUM pgBackRest i zainstaluj 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. Utwórz katalogi buforowania i dzienników dla pgBackRest i przypisz własność do użytkownika 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. Utwórz /etc/pgbackrest/pgbackrest.conf i skonfiguruj ścisłe uprawnienia do plików.
    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. Zainicjuj sekcję pgBackRest jako użytkownik postgres.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Sprawdź, czy w danych wyjściowych znajduje się stanza-create command end: completed successfully.
  6. Skonfiguruj parametry archiwizacji AlloyDB Omni za pomocą 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. Uruchom ponownie usługę AlloyDB Omni, aby zastosować zmiany archiwizacji.
    sudo systemctl restart alloydbomni18
    
  8. Sprawdź integralność konfiguracji i połączenia pgBackRest.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Sprawdź, czy w danych wyjściowych znajduje się check command end: completed successfully.

7. Tworzenie kopii zapasowej

W tej sekcji użyjesz narzędzia pgBackRest, aby wykonać pełną i różnicową kopię zapasową bazy danych AlloyDB Omni w pamięci obiektowej zgodnej z S3.

  1. Uruchom pełną kopię zapasową za pomocą ikony pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. Uruchom różnicową kopię zapasową za pomocą elementu pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Uwaga: inne obsługiwane typy kopii zapasowych to incr (przyrostowe).

8. Wyświetlanie listy kopii zapasowych i ich weryfikowanie

W tej sekcji wyświetlisz listę kopii zapasowych i sprawdzisz, czy zostały utworzone.

  1. Wyświetl listę kopii zapasowych za pomocą polecenia pgbackrest info.
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Sprawdź, czy dane wyjściowe zawierają status: ok wraz z informacjami o kopii zapasowej dla każdego wykonanego polecenia tworzenia kopii zapasowej:
    • Pełna kopia zapasowa: full backup: F (np. 20260908-093545F)
    • Kopia zapasowa różnicowa: diff backup: F_D (np. 20260908-093545F_20260908-094016D)
  2. Sprawdź pliki kopii zapasowej zapisane w zasobniku za pomocą klienta S3 (mc).
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    W danych wyjściowych powinny się pojawić wartości backup, archive i stanza.info.

9. Przywracanie danych z kopii zapasowej

W tej sekcji zatrzymasz usługę bazy danych AlloyDB Omni i przywrócisz dane z określonej kopii zapasowej za pomocą pgbackrest.

Ostrzeżenie: przywracanie zatrzymuje bazę danych i nadpisuje wszystkie jej dane.

  1. Zdefiniuj zmienną środowiskową dla identyfikatora kopii zapasowej, z której chcesz przywrócić dane. Zastąp wartość identyfikatorem kopii zapasowej widocznym w danych wyjściowychpgbackrest info.
    export BACKUPID="20260908-093545F"
    
  2. Zatrzymaj usługę AlloyDB Omni i sprawdź, czy jest nieaktywna.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Sprawdź, czy w danych wyjściowych znajduje się Active: inactive.
  3. Uruchom polecenie pgbackrest restore z opcją --delta, aby przywrócić bazę danych z wybranej kopii zapasowej.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Sprawdź, czy w danych wyjściowych znajduje się restore command end: completed successfully.
  4. Uruchom usługę AlloyDB Omni i sprawdź, czy jest aktywna i działa.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Sprawdź, czy w danych wyjściowych znajduje się Active: active (running).

10. Czyszczenie i ankieta

Po ukończeniu ćwiczenia z programowania możesz zwolnić miejsce w zasobach Google Cloud, aby uniknąć niechcianych opłat.

  1. Odłącz się od sesji SSH na maszynie wirtualnej, aby wrócić do lokalnego terminala Cloud Shell.
    exit
    
  2. Usuń instancję maszyny wirtualnej Compute Engine.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. Usuń regułę zapory sieciowej utworzoną na potrzeby dostępu SSH.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Usuń bramę Cloud NAT i router 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. Usuń trasę niestandardową.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Gratulacje

Gratulujemy ukończenia warsztatów! Udało Ci się skonfigurować pgBackRest do tworzenia kopii zapasowych i przywracania wdrożenia AlloyDB Omni RPM przy użyciu pamięci obiektowej zgodnej z S3.

Omówione zagadnienia

  • Jak skonfigurować maszynę wirtualną Compute Engine na potrzeby AlloyDB Omni RPM.
  • Jak skonfigurować zasobnik obiektowej pamięci masowej zgodnej z S3.
  • Jak skonfigurować pgBackRest z repozytorium zgodnym z S3.
  • Jak tworzyć, wyświetlać i weryfikować pełne i różnicowe kopie zapasowe.
  • Jak przywrócić dane z kopii zapasowej za pomocą pgBackRest.

Więcej informacji znajdziesz w omówieniu AlloyDB Omni.

12. Ankieta

Jak zamierzasz wykorzystać ten samouczek?

Tylko przeczytaj Przeczytaj i wykonaj ćwiczenia