Пример установки и использования WAL-G
Тестовый стенд имеет следующие характеристики:
- RAM - 4GB
- HDD - 15 GB
- CPU - 2 Cores
- OS - Astra 1.7.6
- Тантор СУБД 16.6.0
Установка и настройка.
pool_w_wal-g_wal-g_2.0.1-1_amd64.deb
Скачать и установить из прикреплённого к статье файла;
- Устанавливаем утилиту 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
- В домашнем каталоге пользователя postgres:
su - postgres
postgres@cs-db-001:~$ pwd
/var/lib/postgresql
1. Создаем каталог walgdata для РК данных СУБД Тантор.
mkdir walgdata
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-16/data",
"PGHOST": "/var/run/postgresql/.s.PGSQL.5432"
}
WALG_COMPRESSION_METHOD определяет применяемый метод сжатия данных brotli
WALG_DELTA_MAX_STEPS определяет, сколько разностных резервных копий (между ранее созданной резервной копией и текущим состоянием) может быть между полными резервными копиями
WALG_FILE_PREFIX определяет расположение каталога данных WAL-G /var/lib/postgresql/walgdata
PGDATA определяет расположение каталога данных СУБД Тантор /var/lib/postgresql/tantor-se-16/data
PGHOST определяет расположение информационного файла сервиса СУБД Тантор
3. Вносим изменения в файл конфигурации СУБД Тантор /var/lib/postgresql/tantor-se-16/data/postgresql.auto.conf
cat >> /var/lib/postgresql/tantor-se-16/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
4. Перезапускаем сервис СУБД Тантор для применение изменений.
postgres@cs-db-002:~$ sudo systemctl restart tantor-se-server-16.service
5. Выполняем проверку каталога walgdata.
postgres@cs-db-001:~$ wal-g backup-list
INFO: 2023/10/18 15:24:45.505704 No backups found
Создание резевной копиии (РК) и восстановление из неё.
6. Выполняем РК СУБД Тантор с использованием утилиты WAL-G.
postgres@alse174cmdt3:~$ wal-g backup-push /var/lib/postgresql/tantor-se-16/data
postgres@cs-db-002:~$ wal-g backup-push /var/lib/postgresql/tantor-se-16/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
7. Останавливаем СУБД Тантор.
sudo systemctl stop tantor-se-server-16.service
8. Перемещаем каталог данных СУБД Тантор.
cp -r /var/lib/postgresql/tantor-se-16/data /var/lib/postgresql/tantor-se-16/savedata
rm -rf /var/lib/postgresql/tantor-se-16/data/*
9. Восстанавливаем каталог данных СУБД Тантор с использованием утилиты WAL-G.
wal-g backup-fetch /var/lib/postgresql/tantor-se-16/data LATEST
postgres@cs-db-002:~$ wal-g backup-fetch /var/lib/postgresql/tantor-se-16/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
10. Создаем в каталоге данных СУБД Тантор файл recovery.signal для запуска восстановления.
touch /var/lib/postgresql/tantor-se-16/data/recovery.signal
11. Запускаем СУБД Тантор и проверяем работу сервиса и доступ к СУБД.
sudo systemctl start tantor-se-server-16.service
12. Проверяем работу сервиса и доступ к СУБД.
sudo systemctl status tantor-se-server-16.service