Подготовка к работе
С точки зрения резервного копирования и восстановления, система RuPost состоит из СУБД PostgreSQL и «холодного» хранилища писем.
Модуль должен располагаться на узле с СУБД PostgreSQL. Если СУБД развёрнута в кластере Patroni, то модуль должен быть установлен и настроен на каждом узле кластера.
1. Подготовка «холодного» хранилища
«Холодное» хранилище писем должно быть примонтировано к узлу с модулем с помощью NFS (к каждому узлу кластера).
Предварительно на узле с модулем должен быть установлен клиент NFS:
sudo apt update
sudo apt install nfs-common
Чтобы примонтировать «Холодное хранилище» на системе на базе Deb (Ubuntu, Debian, Mint и др.) используйте команду:
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
В файле конфигурации модуля «/opt/rubackup/etc/rb_module_rupost.conf» необходимо указать путь до «холодного» хранилища:
cold_storage destination_folder
2. Подготовка СУБД PostgreSQL
Подготовка СУБД PostgreSQL к выполнению резервного копирования при помощи СРК RuBackup включает в себя:
-
Подготовку сервера с СУБД PostgreSQL;
-
Создание пользователя СУБД для безопасного выполнения резервной копии PostgreSQL.
2.1. Подготовка сервера с СУБД PostgreSQL
Для подготовки сервера с СУБД PostgreSQL необходимо выполнить следующие шаги:
-
Для обеспечения доступа пользователя rubackup_backuper к СУБД измените метод доступа в конфигурационном файле СУБД PostgreSQL /etc/postgresql/12/main/pg_hba.conf (расположение файла может отличаться в зависимости от дистрибутива Linux и версии PostgreSQL) на md5.
-
Для непрерывного архивирования и восстановления СУБД PostgreSQL необходимо включить архивирование WAL, для чего:
-
в конфигурационном файле СУБД PostgreSQL /etc/postgresql/12/main/postgresql.conf (расположение файла может отличаться в зависимости от дистрибутива Linux и версии PostgreSQL) настройте следующие параметры:
wal_level = replica archive_mode = on archive_command = 'cp %p /opt/rubackup/mnt/postgresql_archives/%f'
-
там же установите значение параметра data_directory (если оно не определено), иначе модуль резервного копирования не сможет определить местоположение файлов СУБД:
data_directory = '/var/lib/postgresql/12/main'
-
в файле postgresql.conf для версий PostgreSQL 12 и более новых должна быть прописана строка, определяющая порядок развертывания СУБД из резервной копии:
restore_command = 'cp /opt/rubackup/mnt/postgresql_archives/%f %p'
-
-
После внесения изменений в конфигурационный файл перезапустите PostgreSQL командой:
sudo service postgresql restart
Значение параметра archive_command должно содержать каталог в файловой системе сервера PostgreSQL, в который будут копироваться архивируемые сегменты WAL.
В настройках RuBackup для каждой СУБД PostgreSQL в файле /opt/rubackup/etc/rb_module_postgresql.conf определен параметр archive_catalog, содержащий значение каталога, в котором предполагается временное хранение архивных WAL-файлов. Значение этого параметра по умолчанию:
/opt/rubackup/mnt/postgresql_archives/
При планировании установки СРК RuBackup вы можете назначить для хранения архивных WAL-файлов выделенное хранилище требуемого размера и сделать на него ссылку на том сервере PostgreSQL, где это требуется.
Объем необходимого пространства под архивные WAL-файлы зависит от нагруженности базы данных и периодичности бэкапов, а также от значения параметра auto_remove_wal в конфигурационном файле.
Указанный каталог должен быть доступен для записи и чтения пользователю postgres, а также пользователю, под контролем которого работает клиент RuBackup! Для этого воспользуйтесь командой:
sudo chown postgres:postgres /opt/rubackup/mnt/postgresql_archives/
Для правильной работы клиента RuBackup параметр archive_catalog в конфигурации RuBackup и параметр archive_command в конфигурационном файле PostgreSQL должны иметь одинаковое значение для одной и той же СУБД.
После изменения параметров конфигурационного файла необходимо перезагрузить PostgreSQL при помощи команды:
sudo systemctl restart postgresql
2.2. Создание пользователя СУБД для безопасного выполнения резервной копии PostgreSQL
Для выполнения операции создания базовой резервной копии пользователь должен обладать правами на выполнение функций начала и окончания резервного копирования экземпляра PostgreSQL. Для настройки выполните следующие действия:
-
Вызовите psql при помощи команды:
sudo -u postgres psql
-
В psql создайте пользователя rubackup_backuper (в качестве пароля укажите желаемый пароль вместо 12345):
create user rubackup_backuper password '12345'; alter role rubackup_backuper with login;
В PostgreSQL версии 14 и ниже используются функции pg_stop_backup и pg_start_backup, а в версии 15 и выше - pg_backup_stop и pg_backup_start. grant execute on function pg_backup_start to rubackup_backuper; grant execute on function pg_backup_stop(bool, bool) to rubackup_backuper; grant execute on function pg_switch_wal to rubackup_backuper; grant pg_read_all_settings to rubackup_backuper;
Вместо пользователя rubackup_backuper вы можете создать пользователя с другим именем и с таким же набором прав. В файле конфигурации модуля /opt/rubackup/etc/rb_module_rupost.conf необходимо указать имя пользователя и его пароль:
cold_storage destination_folder username rubackup_backuper password 12345 port 5432 archive_catalog /opt/rubackup/mnt/postgresql_archives pg_ctl /usr/lib/postgresql/12/bin/pg_ctl auto_remove_wal yes direct_restore yes postgresql_admin postgres
Для параметра pg_ctl необходимо указать абсолютный путь для используемой версии PostgreSQL.