PG. BaseBackup и восстановление.

/ Просмотров: 375
Метки: ,
PG. BaseBackup и восстановление.

Итак, Debian 11, PGSQL 15. Делаем basebackup и восстанавливаемся с него.

0. Устанавливаем PG.

apt-get update
apt-get install mc wget ssl-cert git -y
wget https://repo.postgrespro.ru/1c-15/keys/pgpro-repo-add.sh
chmod +x pgpro-repo-add.sh
./pgpro-repo-add.sh
apt-get install postgrespro-1c-15
/opt/pgpro/1c-15/bin/pg-setup service enable
/opt/pgpro/1c-15/bin/pg-setup service status
su - postgres psql
        ALTER USER postgres PASSWORD 'sqlpass'
        \q

1. Конфиг нашего исходного сервера:

log_timezone = 'Asia/Tomsk'
datestyle = 'iso, dmy'
timezone = 'Asia/Tomsk'
default_text_search_config = 'pg_catalog.russian'
listen_addresses = '*'
max_connections = 100
shared_buffers = 16GB
effective_cache_size = 48GB
maintenance_work_mem = 2GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 20971kB
min_wal_size = 1GB
max_wal_size = 4GB
max_worker_processes = 32
max_parallel_workers_per_gather = 4
max_parallel_workers = 32
max_parallel_maintenance_workers = 4
archive_mode = on
archive_timeout = 300
archive_command = 'test ! -f /mnt/basebackups/SRV-001/wals/%f && cp %p /mnt/basebackups/SRV-001/wals/%f'

2. Выполняем полное резервное копирование исходного сервера:

PGPASSWORD="sqlpass" pg_basebackup -h localhost -U postgres -D /mnt/basebackups/SRV-001/arc -Ft -z -P

3. Восстанавливаем резервную копию на другом сервере:

# останавливаем сервер БД
/opt/pgpro/1c-15/bin/pg-setup service stop
# удаляем директорию с данными
rm -rf /var/lib/pgpro/1c-15/data/
# создаем директорию данных и назщначаем ей необходимые права
mkdir /var/lib/pgpro/1c-15/data/
chown postgres:postgres /var/lib/pgpro/1c-15/data/
chmod 700 /var/lib/pgpro/1c-15/data
# копируем данные из резервной копии
tar xvf /mnt/basebackups/SRV-001/arc/base.tar.gz -C  /var/lib/pgpro/1c-15/data/
# создаем флаг сигнализрующий, что будем восстанавливать бьазу из WAL`ов
echo > /var/lib/pgpro/1c-15/data/recovery.signal
# не знаю зачем, но я удалял
rm -rf /var/lib/pgpro/1c-15/data/pg_wal/archive_status/

в файл postgresql.conf добавляем

restore_command = 'cp /mnt/basebackups/SRV-001/wals/%f %p'

4. Запускаем сервер и смотрим журнал

/opt/pgpro/1c-15/bin/pg-setup service start
journalctl -xe

Источник