Инициализация базы данных с проверкой контрольных сумм
$ /usr/lib/postgresql/17/bin/initdb -D /var/lib/postgresql/17/main/ --data-checksums
Установка pg_probackup в Ubuntu Linux
# apt update
# apt install gpg wget lsb-release
# wget -qO - https://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG-PROBACKUP | sudo tee /etc/apt/trusted.gpg.d/pg_probackup.asc
# . /etc/os-release
# Add the repository line to a new sources file
echo "deb [arch=amd64] https://repo.postgrespro.ru/pg_probackup/deb $VERSION_CODENAME main-$VERSION_CODENAME" | sudo tee /etc/apt/sources.list.d/pg_probackup.list
deb [arch=amd64] https://repo.postgrespro.ru/pg_probackup/deb questing main-questing
# apt update
# apt-get install pg-probackup-17
Подготовка окружения
Создаем каталог для хранения резервных копий и назначаем права доступа к каталогу для пользователя postgres.
# mkdir -p /data-vol/backup/postgresql
# chown -R postgres:postgres /data-vol/backup/postgresql
Настраиваем конфигурацию postgresql.conf для архивирования wal-файлов.
wal_level = replica # или выше
archive_mode = on
archive_command = 'test ! -f /data-vol/backup/postgresql/wal/main_backup/%f && cp %p /data-vol/backup/postgresql/wal/main_backup/%f'
Перезапускаем Postgresql:
# systemctl restart postgresql
Инициализация хранилища резервных копий
Инициализируем хранилише.
$ pg_probackup-17 init -B /data-vol/backup/postgresql/
$ ls /data-vol/backup/postgresql/
Регистрация экземпляра Postgresql.
$ pg_probackup-17 add-instance -B /data-vol/backup/postgresql/ -D /var/lib/postgresql/17/main --instance=main_backup
Назначаем политику удержания резервных копий
# $ pg_probackup-17 set-config --instance main_backup -B /mnt/nfs/postgresql-db-main/ --retention-window=7 --retention-redundancy=2
- необходимо удерживать все резервные копии младше 7 дней
- при этом кол-во полных резервный копий должно быть не меньше двух
Создание первой резервной копии
Полный бэкап
# chown -R postgres:postgres /data-vol/backup/postgresql/
# su postgres
$ mkdir -p /data-vol/backup/postgresql/wal/main_backup/pg_wal/
$ pg_probackup-17 backup -B /data-vol/backup/postgresql --instance=main_backup -b FULL -U postgres -d postgres
# exit
Инкрементный бэкап (после полного)
# su postgres
$ pg_probackup-17 backup -B /data-vol/backup/postgresql/ --instance=main_backup -b PAGE -U postgres -d postgres
# exit
Проверка резервных копий
Список резервных копий.
$ pg_probackup-17 show -B /data-vol/backup/postgresql/
Проверка целостности.
$ pg_probackup-17 checkdb -B /data-vol/backup/postgresql/ --instance=main_backup
Восстановление из резервной копии
Останавливаем postgresql.
# systemctl stop postgresql
Восстановление из резервной копии производится в пустой каталог. Восстанавливаем из резервной копии.
$ pg_probackup-17 show -B /data-vol/backup/postgresql/
$ pg_probackup-17 restore -B /data-vol/backup/postgresql/ --instance=main_backup -D /var/lib/postgresql/17/main --backup-id=T6MWEX
Запускаем postgresql.
# systemctl start postgresql
Удаление резервной копии из архива
$ pg_probackup-17 show -B /mnt/nfs/postgresql-db-main/




