Создайте резервную копию и восстановите RPM-пакет AlloyDB Omni в хранилище, совместимом с S3, используя pgBackRest.

1. Введение

В этом практическом задании показано, как настроить pgBackRest для резервного копирования и восстановления развертывания AlloyDB Omni RPM с использованием объектного хранилища, совместимого с S3.

Примечание: В этом практическом задании вы развернете автономный исполняемый файл MinIO на виртуальной машине, который будет выступать в качестве локального, легковесного хранилища, совместимого с S3, для целей обучения и тестирования. Для производственных нагрузок всегда используйте поддерживаемое, активно обновляемое решение для хранения данных, совместимое с S3, или облачное объектное хранилище.

Предварительные требования

  • Доступ к проекту Google Cloud и Cloud Shell из Cloud Console.
  • Установлен и настроен Google Cloud SDK ( gcloud ).

Что вы узнаете

  • Как настроить виртуальную машину Compute Engine для AlloyDB Omni RPM.
  • Как настроить локальный сервер объектного хранилища, совместимый с S3, на виртуальной машине.
  • Как настроить pgBackRest для использования S3-совместимого объектного хранилища в качестве репозитория резервных копий.
  • Как выполнять, составлять списки и проверять резервные копии.
  • Как восстановить данные из резервной копии.

Что вам понадобится

  • Получите URL-ссылку на RPM-пакеты AlloyDB Omni . Ссылки будут отправлены на вашу электронную почту и будут содержать URL-адрес сервера репозитория. Инициализируйте следующую переменную среды, чтобы URL-адрес оставался готовым к использованию во время выполнения практического задания.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • Рабочий терминал с доступом к Google Cloud. Для этой цели можно использовать Cloud Shell.

2. Настройка и требования

Настройка проекта

Создайте проект в Google Cloud.

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud .
  2. Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .

Запустить Cloud Shell

Хотя вы можете управлять Google Cloud удаленно со своего ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

Значок для активации Cloud Shell

  1. Откройте консоль Google Cloud и нажмите на значок Cloud Shell на панели инструментов в правом верхнем углу. Вы также можете открыть Cloud Shell одним из следующих способов:

Обычно на подготовку и подключение к среде уходит несколько минут. После завершения этой операции вы увидите что-то подобное следующему:

Терминал Google Cloud Shell показывает, что среда подключена. {: width="624"}

3. Создайте виртуальную машину Compute Engine.

В этом разделе вы создадите одну виртуальную машину Compute Engine (GCE) с помощью инструмента командной строки gcloud . Вы будете использовать образ Rocky Linux 9, который полностью совместим с RPM-пакетами AlloyDB Omni.

  1. Определите переменные среды для идентификатора вашего проекта, имени виртуальной машины, типа машины, зоны и региона.
    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, и настройте проект по умолчанию.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Создайте правило брандмауэра, разрешающее SSH-подключения к вашей виртуальной машине.
    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. Поскольку виртуальная машина создается без публичного IP-адреса, настройте облачный маршрутизатор и шлюз Cloud NAT, чтобы виртуальная машина могла получать доступ к внешним репозиториям пакетов и загружать необходимое программное обеспечение.
    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 существует действительный маршрут шлюза в интернет по умолчанию. В некоторых общих или тестовых средах маршруты по умолчанию иногда удаляются скриптами очистки. Этот маршрут необходим для того, чтобы Cloud NAT перенаправлял исходящий трафик в интернет.
    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. Создайте экземпляр виртуальной машины Compute Engine с операционной системой Rocky Linux 9 и балансным постоянным диском объемом 20 ГБ. Для повышения безопасности используйте флаг --no-address , чтобы виртуальной машине не назначался публичный 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. После создания виртуальной машины проверьте её статус.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. Настройте объектное хранилище, совместимое с S3.

В этом разделе вы подключаетесь к своей виртуальной машине, подготавливаете среду и настраиваете локальный сервер объектного хранилища, совместимый с S3 ( minio ), а также клиент S3 ( mc ) для размещения вашего хранилища резервных копий.

  1. Подключитесь к виртуальной машине по SSH, используя Identity-Aware Proxy (IAP). Поскольку у виртуальной машины нет публичного IP-адреса, gcloud автоматически направит SSH-соединение через IAP.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Установите пакет policycoreutils-python-utils , чтобы при необходимости позже можно было настроить политику SELinux.
    sudo dnf install -y policycoreutils-python-utils
    
  3. Загрузите бинарный файл сервера, совместимый с 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. Создайте каталог данных для сервера объектного хранилища.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. Запустите S3-совместимый сервер в фоновом режиме, используя пример учетных данных. Обратите внимание, что секретный ключ должен содержать не менее 8 символов.
    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-совместимый сервер запущен.
    ps aux | grep minio
    
  7. Загрузите и установите клиент S3 ( mc ) для управления хранилищами.
    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 ( s3repo ) и создайте корзину с именем alloydb-backups .
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. Установите AlloyDB Omni

В этом разделе вы устанавливаете и настраиваете AlloyDB Omni.

  1. Настройте переменные среды на виртуальной машине для каталога данных, URL-адреса вашего репозитория AlloyDB Omni и надежного пароля для пользователя-администратора PostgreSQL postgres . Замените URL-адрес на тот, который вы получили из формы регистрации.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Примечание: В данном примере для простоты используется передача паролей с помощью переменных окружения в командной строке (например, PGPASSWORD=$PGPASSWORD ), однако это может привести к раскрытию пароля в листингах процессов. В производственной среде следует использовать более безопасные методы, такие как файл .pgpass или менеджер секретов.
  2. Создайте каталог данных, в котором AlloyDB Omni будет хранить файлы своей базы данных.
    sudo mkdir -p $PGDATA
    
  3. Настройте репозиторий YUM на вашей виртуальной машине, создав файл конфигурации репозитория.
    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.
    sudo yum makecache
    
  5. Установите RPM-пакет AlloyDB Omni версии 18.
    sudo dnf install -y alloydbomni18
    
  6. Инициализируйте экземпляр базы данных AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Для упрощения настройки временно отключите режим принудительного применения SELinux, как это предусмотрено стандартными рекомендациями Codelab.
    sudo setenforce 0
    
  8. Подготовьте экземпляр базы данных AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. Включите и запустите службу systemd AlloyDB Omni.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. Убедитесь, что служба AlloyDB Omni активна и успешно работает.
    sudo systemctl status alloydbomni18
    

6. Настройка pgBackRest

В этом разделе вы устанавливаете pgBackRest из общего репозитория AlloyDB Omni, настраиваете файл /etc/pgbackrest/pgbackrest.conf для использования вашего S3-совместимого хранилища объектов в качестве хранилища резервных копий и включаете архивирование WAL в AlloyDB Omni.

  1. Создайте переменную среды на виртуальной машине для URL-адреса вашего репозитория AlloyDB Omni Common. Замените URL-адрес на тот, который вы получили из формы регистрации.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. Настройте репозиторий pgBackRest YUM и установите 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. Создайте каталоги spool и log для pgBackRest и назначьте права владения пользователю 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. Создайте файл /etc/pgbackrest/pgbackrest.conf и настройте строгие права доступа к файлам.
    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 от имени пользователя postgres .
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Убедитесь, что в выводе отображается сообщение " stanza-create command end: completed successfully .
  6. Настройте параметры архивации AlloyDB Omni с помощью 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. Перезапустите службу AlloyDB Omni, чтобы применить изменения архивации.
    sudo systemctl restart alloydbomni18
    
  8. Проверьте целостность конфигурации и подключение pgBackRest.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Убедитесь, что в выводе отображается сообщение check command end: completed successfully .

7. Выполните резервное копирование.

В этом разделе вы используете pgBackRest для выполнения полного резервного копирования и дифференциального резервного копирования вашей базы данных AlloyDB Omni в объектное хранилище, совместимое с S3.

  1. Запустите полное резервное копирование с помощью pgbackrest .
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. Запустите дифференциальное резервное копирование с помощью pgbackrest .
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Примечание: К поддерживаемым типам резервного копирования относится также incr (инкрементальное) резервное копирование.

8. Составьте список и проверьте резервные копии.

В этом разделе вы перечисляете резервные копии и проверяете, успешно ли они были созданы.

  1. Выведите список резервных копий с помощью команды pgbackrest info .
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Убедитесь, что в выводе отображается status: ok а также информация о резервном копировании для каждой выполненной вами команды резервного копирования:
    • Полное резервное копирование: full backup: F (например, 20260908-093545F )
    • Разница в резервных копиях: diff backup: F_ D (например, 20260908-093545F_20260908-094016D )
  2. Проверьте файлы резервных копий, хранящиеся в хранилище, с помощью клиента S3 ( mc ).
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    В выходных данных вы должны увидеть backup , archive и stanza.info .

9. Восстановление данных из резервной копии

В этом разделе вы останавливаете службу базы данных AlloyDB Omni и восстанавливаете данные из определенной резервной копии с помощью pgbackrest .

Внимание: Восстановление останавливает работу базы данных и перезаписывает все данные базы данных.

  1. Задайте переменную среды для идентификатора резервной копии, из которой вы хотите восстановить данные. Замените значение идентификатором резервной копии, указанным в выводе команды pgbackrest info .
    export BACKUPID="20260908-093545F"
    
  2. Остановите службу AlloyDB Omni и убедитесь, что она неактивна.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Убедитесь, что в выводе отображается Active: inactive .
  3. Запустите pgbackrest restore с параметром --delta , чтобы восстановить базу данных из выбранной резервной копии.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Убедитесь, что в выводе отображается сообщение restore command end: completed successfully .
  4. Запустите службу AlloyDB Omni и убедитесь, что она активна и работает.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Убедитесь, что в выводе отображается Active: active (running) .

10. Очистка и обследование

После завершения практического задания вы можете очистить ресурсы Google Cloud, чтобы избежать ненужных расходов.

  1. Чтобы вернуться в локальный терминал Cloud Shell, отключитесь от SSH-сессии на виртуальной машине.
    exit
    
  2. Удалите экземпляр виртуальной машины Compute Engine.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. Удалите правило брандмауэра, созданное для доступа по SSH.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Удалите шлюз Cloud NAT и маршрутизатор 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. Удалите пользовательский маршрут.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Поздравляем!

Поздравляем с завершением практического задания! Вы успешно настроили pgBackRest для резервного копирования и восстановления развертывания AlloyDB Omni RPM с использованием объектного хранилища, совместимого с S3.

Что мы рассмотрели

  • Как настроить виртуальную машину Compute Engine для AlloyDB Omni RPM.
  • Как настроить хранилище объектов, совместимое с S3.
  • Как настроить pgBackRest для работы с репозиторием, совместимым с S3.
  • Как выполнять, составлять списки и проверять полные и дифференциальные резервные копии.
  • Как восстановить данные из резервной копии с помощью pgBackRest.

Для получения более подробной информации см. обзор AlloyDB Omni .

12. Опрос

Как вы будете использовать этот учебный материал?

Прочитайте только до конца. Прочитайте текст и выполните упражнения.