Подготовка к работе
С точки зрения резервного копирования и восстановления почтовая система RuPost состоит из СУБД PostgreSQL и холодного[1] хранилища писем.
Модуль должен иметь доступ к холодному[1] хранилищу.
(опционально) Модуль должен располагаться на узле с СУБД PostgreSQL только в том случае, если необходимо осуществлять резервное копирование служебной базы данных почтовой системы RuPost. Если СУБД развёрнута в кластере Patroni, то модуль должен быть установлен и настроен на каждом узле кластера.
1. Подготовка холодного хранилища
Холодное[1] хранилище писем должно быть примонтировано к узлу с модулем с помощью NFS, для этого:
-
На узле с модулем установите клиент NFS:
sudo apt update sudo apt install nfs-common
-
Примонтируйте холодное[1] хранилище:
sudo mount -t nfs ip_address:/nfs_src_folder destination_folder
где:
-
ip_address
- это IP-адрес узла с холодным хранилищем писем; -
nfs_src_folder
- исходное расположение холодного хранилища писем; -
destination_folder
- точка монтирования холодного хранилища писем на узле с модулем.
-
-
Чтобы после перезагрузки узла с модулем холодное хранилище оставалось примонтированным, добавьте в файл
/etc/fstab
строку:ip_address:/nfs_src_folder destination_folder nfs auto 0 0
-
В файле настроек модуля укажите путь до холодного[1] хранилища:
cold_storage destination_folder
2. Подготовка СУБД PostgreSQL
Подготовка СУБД PostgreSQL к выполнению резервного копирования с помощью модуля RuPost включает в себя:
-
Создание и настройку пользователя СУБД для безопасного выполнения резервной копии PostgreSQL.
-
Доступ пользователя к СУБД PostgreSQL.
-
Настройку режима архивирования журналов транзакций.
2.1. Создание и настройка прав пользователя СУБД
Если для доступа к СУБД используется учетная запись не администратора СУБД, то для создания базовой резервной копии пользователь должен обладать правами на вызов функций начала и окончания резервного копирования экземпляра СУБД.
-
Вызовите
psql
от имени администратора СУБД:sudo -u postgres psql
-
Создайте в СУБД пользователя
rubackup_backuper
.create user rubackup_backuper password '12345'; (1) alter role rubackup_backuper with login;
1 Вместо 12345
укажите желаемый пароль. -
Настройте права пользователя в СУБД для доступа.
Пример 1. Предоставление прав на выполнение функций в PostgreSQL версии 15 и вышеgrant execute on function pg_backup_start(text,bool) to rubackup_backuper; (1) grant execute on function pg_backup_stop(bool) to rubackup_backuper; (1) grant execute on function pg_switch_wal() to rubackup_backuper; grant pg_read_all_settings to rubackup_backuper;
1 В PostgreSQL версии 14 и ниже используются функции pg_stop_backup
иpg_start_backup
, а в версии 15 и выше —pg_backup_stop
иpg_backup_start
.В файле настроек модуля необходимо указать имя созданного пользователя (
username
) и его пароль (password
).
2.2. Доступ пользователя к СУБД
Правила доступа к СУБД задаются в файле pg_hba.conf
.
Файл pg_hba.conf
:
-
устанавливает метод подключения (
local
— локально,host
— по TCP/IP); -
ограничивает доступ базой данных или задачей (
replication
); -
предоставляет доступ пользователю с заданных адресов указанным методом аутентификации.
В зависимости от версии СУБД PostgreSQL месторасположение файла может отличаться. |
Добавьте в файл pg_hba.conf
строки, указывающие на право пользователя
rubackup_backuper
на локальный (localhost
, 127.0.0.1
) доступ по TCP/IP
к СУБД для резервного копирования и репликации. Закомментируйте строки,
предоставляющие доступ неограниченному кругу лиц (host all all
).
host backupdb rubackup_backuper 127.0.0.1 md5
host replication rubackup_backuper 127.0.0.1 md5
pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
# host all all 127.0.0.1/32 md5
# IPv6 local connections
# host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege
local replication all md5
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
host backupdb rubackup_backuper 127.0.0.1/32 md5
host replication rubackup_backuper 127.0.0.1/32 md5
Если вы хотите подключаться из локальной сети (192.168.*.*
)
непосредственно к СУБД, добавьте в pg_hba.conf
строку:
host any any 192.168.1.1/32 md5
Для доступа к СУБД необходимо открыть порт 5432 (или иной заданный
в postgresql.conf ) в фаерволе узла клиента. Пользователь, для которого
требуется доступ к СУБД, должен существовать и иметь необходимые полномочия.
|
В файле настроек модуля необходимо
указать абсолютный путь для используемой версии PostgreSQL (pg_ctl ).
|
2.3. Режим архивирования журналов транзакций
СУБД на основе PostgreSQL хранят журналы транзакций. Архивирование и резервное копирование этих журналов позволяет восстановить БД из любого неконсистентного состояния путем последовательного применения сохраненных транзакций.
Режим архивирования журналов транзакций настраивается в файле postgresql.conf
.
В зависимости от версии СУБД PostgreSQL месторасположение файла может отличаться. |
Чтобы включить режим архивирования журналов транзакций в postgresql.conf
:
-
установите параметру
wal_level
значениеreplica
; -
установите параметру
archive_mode
значениеyes
илиalways
; -
задайте команды сохранения (
archive_command
) и восстановления (restore_command
) журналов транзакций.
postgresql.conf
wal_level = replica
archive_mode = on
archive_command = 'cp %p /opt/rubackup/mnt/postgresql_archives/%f'
restore_command = 'cp /opt/rubackup/mnt/postgresql_archives/%f %p'
Допускается сжатие архивных файлов транзакций во время архивирования или восстановления из архива.
archive_command = 'gzip < %p > /opt/rubackup/mnt/postgresql_archives/%f.gz'
restore_command = 'gunzip < /opt/rubackup/mnt/postgresql_archives/%f.gz > %p'
Путь к архиву в файле настроек модуля должен
совпадать с путём, указанным в конфигурационном
файле СУБД PostgreSQL (параметр archive_command
).
В файле настроек модуля (параметр
archive_catalog
) укажите на папку, хранящую архив журналов транзакций,