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.
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud .
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
Запустить Cloud Shell
Хотя вы можете управлять Google Cloud удаленно со своего ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

- Откройте консоль Google Cloud и нажмите на значок Cloud Shell на панели инструментов в правом верхнем углу. Вы также можете открыть Cloud Shell одним из следующих способов:
- Если вы используете консоль Google Cloud, нажмите G, а затем S.
- Нажмите на эту ссылку .
Обычно на подготовку и подключение к среде уходит несколько минут. После завершения этой операции вы увидите что-то подобное следующему:
{: width="624"}
3. Создайте виртуальную машину Compute Engine.
В этом разделе вы создадите одну виртуальную машину Compute Engine (GCE) с помощью инструмента командной строки gcloud . Вы будете использовать образ Rocky Linux 9, который полностью совместим с RPM-пакетами AlloyDB Omni.
- Определите переменные среды для идентификатора вашего проекта, имени виртуальной машины, типа машины, зоны и региона.
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" - Войдите в систему, используя учетную запись Google Cloud, и настройте проект по умолчанию.
gcloud auth login gcloud config set project $PROJECT - Создайте правило брандмауэра, разрешающее 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" - Поскольку виртуальная машина создается без публичного 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 - Убедитесь, что в вашей сети 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 - Создайте экземпляр виртуальной машины 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 - После создания виртуальной машины проверьте её статус.
gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
4. Настройте объектное хранилище, совместимое с S3.
В этом разделе вы подключаетесь к своей виртуальной машине, подготавливаете среду и настраиваете локальный сервер объектного хранилища, совместимый с S3 ( minio ), а также клиент S3 ( mc ) для размещения вашего хранилища резервных копий.
- Подключитесь к виртуальной машине по SSH, используя Identity-Aware Proxy (IAP). Поскольку у виртуальной машины нет публичного IP-адреса,
gcloudавтоматически направит SSH-соединение через IAP.gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Установите пакет
policycoreutils-python-utils, чтобы при необходимости позже можно было настроить политику SELinux.sudo dnf install -y policycoreutils-python-utils - Загрузите бинарный файл сервера, совместимый с 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/ - Создайте каталог данных для сервера объектного хранилища.
sudo mkdir -p /var/lib/s3-storage/data - Запустите 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 & - Убедитесь, что S3-совместимый сервер запущен.
ps aux | grep minio - Загрузите и установите клиент 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/ - Настройте псевдоним клиента S3 (
s3repo) и создайте корзину с именемalloydb-backups.mc alias set s3repo http://localhost:9000 s3admin s3password mc mb s3repo/alloydb-backups
5. Установите AlloyDB Omni
В этом разделе вы устанавливаете и настраиваете AlloyDB Omni.
- Настройте переменные среды на виртуальной машине для каталога данных, URL-адреса вашего репозитория AlloyDB Omni и надежного пароля для пользователя-администратора PostgreSQL
postgres. Замените URL-адрес на тот, который вы получили из формы регистрации. Примечание: В данном примере для простоты используется передача паролей с помощью переменных окружения в командной строке (например,export PGDATA="/var/lib/alloydbomni" export ALLOYDB_OMNI_REPOSITORY_URL="..." export PGPASSWORD="YourStrongPassword123!"PGPASSWORD=$PGPASSWORD), однако это может привести к раскрытию пароля в листингах процессов. В производственной среде следует использовать более безопасные методы, такие как файл.pgpassили менеджер секретов. - Создайте каталог данных, в котором AlloyDB Omni будет хранить файлы своей базы данных.
sudo mkdir -p $PGDATA - Настройте репозиторий 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 - Обновите кэш YUM.
sudo yum makecache - Установите RPM-пакет AlloyDB Omni версии 18.
sudo dnf install -y alloydbomni18 - Инициализируйте экземпляр базы данных AlloyDB Omni.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - Для упрощения настройки временно отключите режим принудительного применения SELinux, как это предусмотрено стандартными рекомендациями Codelab.
sudo setenforce 0 - Подготовьте экземпляр базы данных AlloyDB Omni.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Включите и запустите службу
systemdAlloyDB Omni.sudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - Убедитесь, что служба AlloyDB Omni активна и успешно работает.
sudo systemctl status alloydbomni18
6. Настройка pgBackRest
В этом разделе вы устанавливаете pgBackRest из общего репозитория AlloyDB Omni, настраиваете файл /etc/pgbackrest/pgbackrest.conf для использования вашего S3-совместимого хранилища объектов в качестве хранилища резервных копий и включаете архивирование WAL в AlloyDB Omni.
- Создайте переменную среды на виртуальной машине для URL-адреса вашего репозитория AlloyDB Omni Common. Замените URL-адрес на тот, который вы получили из формы регистрации.
export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..." - Настройте репозиторий 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 - Создайте каталоги 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 - Создайте файл
/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 - Инициализируйте раздел pgBackRest от имени пользователя
postgres. Убедитесь, что в выводе отображается сообщение "sudo -u postgres pgbackrest --stanza=omni stanza-createstanza-create command end: completed successfully. - Настройте параметры архивации 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;" - Перезапустите службу AlloyDB Omni, чтобы применить изменения архивации.
sudo systemctl restart alloydbomni18 - Проверьте целостность конфигурации и подключение pgBackRest.
Убедитесь, что в выводе отображается сообщениеsudo -u postgres pgbackrest --stanza=omni checkcheck command end: completed successfully.
7. Выполните резервное копирование.
В этом разделе вы используете pgBackRest для выполнения полного резервного копирования и дифференциального резервного копирования вашей базы данных AlloyDB Omni в объектное хранилище, совместимое с S3.
- Запустите полное резервное копирование с помощью
pgbackrest.sudo -u postgres pgbackrest \ --stanza=omni \ --type=full backup - Запустите дифференциальное резервное копирование с помощью
pgbackrest. Примечание: К поддерживаемым типам резервного копирования относится такжеsudo -u postgres pgbackrest \ --stanza=omni \ --type=diff backupincr(инкрементальное) резервное копирование.
8. Составьте список и проверьте резервные копии.
В этом разделе вы перечисляете резервные копии и проверяете, успешно ли они были созданы.
- Выведите список резервных копий с помощью команды
pgbackrest info. Убедитесь, что в выводе отображаетсяsudo -u postgres pgbackrest \ --stanza=omni infostatus: okа также информация о резервном копировании для каждой выполненной вами команды резервного копирования:- Полное резервное копирование:
full backup:(например,F 20260908-093545F) - Разница в резервных копиях:
diff backup:(например,F_ D 20260908-093545F_20260908-094016D)
- Полное резервное копирование:
- Проверьте файлы резервных копий, хранящиеся в хранилище, с помощью клиента S3 (
mc). В выходных данных вы должны увидетьmc ls s3repo/alloydb-backups/pgbackrest/backup,archiveиstanza.info.
9. Восстановление данных из резервной копии
В этом разделе вы останавливаете службу базы данных AlloyDB Omni и восстанавливаете данные из определенной резервной копии с помощью pgbackrest .
Внимание: Восстановление останавливает работу базы данных и перезаписывает все данные базы данных.
- Задайте переменную среды для идентификатора резервной копии, из которой вы хотите восстановить данные. Замените значение идентификатором резервной копии, указанным в выводе команды
pgbackrest info.export BACKUPID="20260908-093545F" - Остановите службу AlloyDB Omni и убедитесь, что она неактивна.
Убедитесь, что в выводе отображаетсяsudo systemctl stop alloydbomni18 sudo systemctl status alloydbomni18Active: inactive. - Запустите
pgbackrest restoreс параметром--delta, чтобы восстановить базу данных из выбранной резервной копии. Убедитесь, что в выводе отображается сообщениеsudo -u postgres pgbackrest \ --stanza=omni \ --set=$BACKUPID \ --delta restorerestore command end: completed successfully. - Запустите службу AlloyDB Omni и убедитесь, что она активна и работает.
Убедитесь, что в выводе отображаетсяsudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
10. Очистка и обследование
После завершения практического задания вы можете очистить ресурсы Google Cloud, чтобы избежать ненужных расходов.
- Чтобы вернуться в локальный терминал Cloud Shell, отключитесь от SSH-сессии на виртуальной машине.
exit - Удалите экземпляр виртуальной машины Compute Engine.
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet - Удалите правило брандмауэра, созданное для доступа по SSH.
gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet - Удалите шлюз 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 - Удалите пользовательский маршрут.
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 .