Тестовый стенд имеет следующие характеристики:

  1. RAM - 4GB
  2. HDD - 15 GB
  3. CPU - 2 Cores
  4. OS - Astra 1.7.5

Установка и настройка.

pool_w_wal-g_wal-g_2.0.1-1_amd64.deb

  1. Для актуальных ОС можно взять по ссылке из Github;
  2. Взять собранную Tantor из nexus-dev;
  3. Скачать и установить с из прикреплённого к статье файла;

Были протестированы варианты 2 и 3 из списка выше. В описании ниже будет приведён листинг кода для установки пакета из базы знаний Tantor.

  • Устанавливаем утилиту WAL-G из пакета pool_w_wal-g_wal-g_2.0.1-1_amd64.

wal-g installation and preparation

wget https://wiki.astralinux.ru/tandocs/files/283918239/283918246/1/1697628698923/pool_w_wal-g_wal-g_2.0.1-1_amd64.deb
 
apt install ./pool_w_wal-g_wal-g_2.0.1-1_amd64.deb
 
touch /var/lib/postgresql/walg.log /var/lib/postgresql/walg-bootstrap.log
chown postgres:postgres /var/lib/postgresql/walg.log /var/lib/postgresql/walg-bootstrap.log
 
# опционально - сделать ссылку на бинарный файл (пути могут отличаться), разместив его в каталоге, доступном в переменной $PATH
ln -s /usr/bin/wal-g /usr/local/bin/wal-g
BASH
  • В домашнем каталоге пользователя postgres:

su - postgres

postgres@cs-db-001:~$ pwd
/var/lib/postgresql
BASH


1. Создаем каталог walgdata для РК данных СУБД Тантор.

mkdir walgdata
BASH

2. Создаем файл конфигурации .walg.json для утилиты WAL-G содержащий следующие данные:

nano .walg.json

{
    "WALG_COMPRESSION_METHOD": "brotli",
    "WALG_DELTA_MAX_STEPS": "5",
    "WALG_FILE_PREFIX": "/var/lib/postgresql/walgdata",
    "PGDATA": "/var/lib/postgresql/tantor-se-15/data",
    "PGHOST": "/var/run/postgresql/.s.PGSQL.5432"
}
BASH

WALG_COMPRESSION_METHOD определяет применяемый метод сжатия данных brotli

WALG_DELTA_MAX_STEPS определяет, сколько разностных резервных копий (между ранее созданной резервной копией и текущим состоянием) может быть между полными резервными копиями

WALG_FILE_PREFIX определяет расположение каталога данных WAL-G /var/lib/postgresql/walgdata

PGDATA определяет расположение каталога данных СУБД Тантор /var/lib/postgresql/tantor-se-15/data

PGHOST определяет расположение информационного файла сервиса СУБД Тантор

3. Вносим изменения в файл конфигурации СУБД Тантор /var/lib/postgresql/tantor-se-15/data/postgresql.auto.conf

cat >>  /var/lib/postgresql/tantor-se-15/data/postgresql.auto.conf << EOL
wal_level = replica
archive_mode = on
archive_command = '/usr/bin/wal-g wal-push "%p" 2>&1 | tee -a /var/lib/postgresql/walg.log'
archive_timeout = 60
restore_command = '/usr/bin/wal-g wal-fetch \"%f\" \"%p\" 2>&1 | tee -a /var/lib/postgresql/walg.log'
                                                                            
EOL
BASH

  4. Перезапускаем сервис СУБД Тантор для применение изменений.

postgres@cs-db-002:~$  sudo systemctl restart tantor-se-server-15.service
BASH

5. Выполняем проверку каталога walgdata.

postgres@cs-db-001:~$ wal-g backup-list

INFO: 2023/10/18 15:24:45.505704 No backups found
BASH

Создание резевной копиии (РК) и восстановление из неё.

6. Выполняем РК СУБД Тантор с использованием утилиты WAL-G.

postgres@alse174cmdt3:~$ wal-g backup-push /var/lib/postgresql/tantor-se-15/data

postgres@cs-db-002:~$ wal-g backup-push /var/lib/postgresql/tantor-se-15/data
INFO: 2024/06/13 13:44:31.065520 Couldn't find previous backup. Doing full backup.
INFO: 2024/06/13 13:44:31.072549 Calling pg_start_backup()
INFO: 2024/06/13 13:44:31.808548 Starting a new tar bundle
INFO: 2024/06/13 13:44:31.808582 Walking ...
INFO: 2024/06/13 13:44:31.808811 Starting part 1 ...
INFO: 2024/06/13 13:44:32.053258 Packing ...
INFO: 2024/06/13 13:44:32.054617 Finished writing part 1.
INFO: 2024/06/13 13:44:32.054801 Starting part 2 ...
INFO: 2024/06/13 13:44:32.054930 /global/pg_control
INFO: 2024/06/13 13:44:32.055314 Finished writing part 2.
INFO: 2024/06/13 13:44:32.055338 Calling pg_stop_backup()
INFO: 2024/06/13 13:44:32.139225 Starting part 3 ...
INFO: 2024/06/13 13:44:32.139301 backup_label
INFO: 2024/06/13 13:44:32.139310 tablespace_map
INFO: 2024/06/13 13:44:32.139552 Finished writing part 3.
INFO: 2024/06/13 13:44:32.143816 Wrote backup with name base_000000010000000000000007
BASH

7. Останавливаем СУБД Тантор.

sudo systemctl stop tantor-se-server-15.service
BASH

8. Перемещаем каталог данных СУБД Тантор.

mv /var/lib/postgresql/tantor-se-15/data /var/lib/postgresql/tantor-se-15/savedata
BASH

9. Восстанавливаем каталог данных СУБД Тантор с использованием утилиты WAL-G.

wal-g backup-fetch /var/lib/postgresql/tantor-se-15/data LATEST

postgres@cs-db-002:~$ wal-g backup-fetch /var/lib/postgresql/tantor-se-15/data LATEST
INFO: 2024/06/13 13:45:42.018659 Selecting the latest backup...
INFO: 2024/06/13 13:45:42.018857 LATEST backup is: 'base_000000010000000000000007'
INFO: 2024/06/13 13:45:42.064460 Finished extraction of part_003.tar.br
INFO: 2024/06/13 13:45:48.707092 Finished extraction of part_001.tar.br
INFO: 2024/06/13 13:45:48.709818 Finished extraction of pg_control.tar.br
INFO: 2024/06/13 13:45:48.709843
BASH

10.  Создаем в каталоге данных СУБД Тантор файл recovery.signal для запуска восстановления.

touch /var/lib/postgresql/tantor-se-15/data/recovery.signal
BASH

11. Запускаем  СУБД Тантор и проверяем работу сервиса и доступ к СУБД.

sudo systemctl start tantor-se-server-15.service
BASH

12. Проверяем работу сервиса и доступ к СУБД.

sudo systemctl status tantor-se-server-15.service
BASH