***************** КОПИРОВАНИЕ ***************** Создаем каталоги для WAL файлов pg_log_archive и полного бэкапа db_file_backup =============================================================================== sudo -H -u postgres mkdir /var/lib/postgresql/pg_log_archive sudo -H -u postgres mkdir /var/lib/postgresql/db_file_backup Правим конфиг Постгреса: ======================== sudo nano /var/lib/pgpro/1c-14/data/postgresql.conf Раскомментим и редактируем следующие параметры postgresql.conf =================================================================== archive_mode = on archive_command = 'test ! -f /var/lib/postgresql/pg_log_archive/%f && cp %p /var/lib/postgresql/pg_log_archive/%f' archive_timeout = 900 (значение в секундах (15 мин), чтоб принудительно переключается на новый файл сегмента WAL) Копируем в папку "db_file_backup" наш "Кластер" переключившись предварительно на пользователя postgres ======================================================================================================= sudo su su postgres pg_basebackup -D /var/lib/postgresql/db_file_backup Перезапускаем PostgreSQL, чтобы изменения вступили в силу: ========================================================== sudo systemctl restart postgrespro-1c-14 ***************** ВОССТАНОВЛЕНИЕ ***************** Перед восстановлением сбросим данные на новый WAL, которые не успели записаться в 15 мин (Чтоб не потерять ничего): ================================================================================================================== sudo su su postgres psql -c "select pg_switch_wal();" Останавливаем PostgreSQL: ======================== sudo systemctl stop postgrespro-1c-14 Удаляем данные кластера (папку data): ===================================== sudo su sudo rm -rf /var/lib/pgpro/1c-14/data Восстанавливаем кластер, копируем из бэкапа db_file_backup используя pg_basebackup: ================================================================================== cp -a /var/lib/postgresql/db_file_backup/. /var/lib/pgpro/1c-14/data/ Даем права на каталог data пользователю postgres: ================================================= sudo chown postgres:postgres /var/lib/pgpro/1c-14/data sudo chmod 700 /var/lib/pgpro/1c-14/data Правим параметры postgresql.conf (Для восстановления): ======================================================= sudo nano /var/lib/pgpro/1c-14/data/postgresql.conf Блокируем создание новых WAL (Пока не убедимся что дата, на которую мы восстановились нам подходит): archive_mode = off Раскомментить и указать путь к pg_log_archive (Где WAL): ======================================================== restore_command = 'cp /var/lib/postgresql/pg_log_archive/%f %p' Восстановление на определенный момент времени (Раскомментить и указать дату вместо: yyyy-mm-dd hh:mm:ss.ss): ============================================================================================================= recovery_target_time = 'yyyy-mm-dd hh:mm:ss.ss' ('2022-10-31 18:22:00') Запускаем PostgreSQL в режиме восстановления, создав файл тригер recovery.signal ================================================================================ sudo -H -u postgres touch /var/lib/pgpro/1c-14/data/recovery.signal Старт PostgreSQL: ================= sudo systemctl start postgrespro-1c-14 И если дата восстановления подошла (удаляем каталоги или чистим db_file_backup и pg_log_archive ), делаем повторно полный бэкап и обратно включаем archive_mode = on Одним словом повторяем действия.