Настройка копируемого кластера баз данных для использования pg_probackup
Для выполнения резервного копирования в защищённом режиме необходимо создать роль с ограниченными правами и базу данных резервного копирования. Имя роли, базы данных и пароль условны и могут быть изменены по усмотрению пользователя.
-
Создайте базу данных резервного копирования. Данная операция производится от имени пользователя postgres:
su postgres createdb backupdb
-
Далее описан процесс создания роли для выполнения резервного копирования. В целях обеспечения безопасности копируемых данных, создаваемая роль будет обладать минимальными правами, необходимыми для выполнения резервного копирования экземпляра Postgres Pro. В этом примере такой ролью будет
rubackup_backuper
.-
Выполните подключение к базе данных
backupdb
от имени пользователяpostgres
:sudo -u postgres psql -d backupdb
-
В
psql
создайте рольrubackup_backuper
и задайте пароль, а также задайте разрешения (только в базе данных, к которой производится подключение).Пример 1. Создание ролей и задание разрешений в Postgres Pro 15BEGIN; CREATE ROLE rubackup_backuper WITH LOGIN; ALTER USER rubackup_backuper WITH PASSWORD '12345'; GRANT USAGE ON SCHEMA pg_catalog TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.pg_backup_start(text, boolean) TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.pg_backup_stop(boolean) TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO rubackup_backuper; GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_checkpoint() TO rubackup_backuper; ALTER ROLE rubackup_backuper WITH REPLICATION; COMMIT;
-
-
Создайте файл
.pgpass
в домашнем каталоге пользователя, указанного в параметреpostgresql_admin
в конфигурационном файле модуля. В файле.pgpass
укажите данные для подключения к ранее созданной базе данных и для репликации.Это распространённый способ хранения информации о соединении в PostgreSQL вместо ввода пароля при каждой совершённой операции с
pg_probackup
. Этот файл должен содержать строки в таком формате:сервер:порт:база_данных:имя_пользователя:пароль
Пример 2. Пример файла.pgpass
localhost:5432:backupdb:rubackup_backuper:12345 localhost:5432:replication:rubackup_backuper:12345
Файл
.pgpass
обязательно должен находиться в домашнем каталоге пользователя, указанного в параметреpostgresql_admin
в конфигурационном файле модуля.Маска разрешений файла должна соответствовать маске
0600
. -
Далее необходимо произвести изменения в файле
pg_hba.conf
. Найти конфигурационный файл, относящийся к настраиваемому кластеру, можно так:sudo -u postgres psql psql -c 'show hba_file'
Вызовите
psql
при помощи команды:sudo -u postgres psql
Если для пользователя
postgres
не установлен пароль, установите его, изменив12345
на подходящий:alter user postgres with password `12345`;
В конец файла
pg_hba.conf
добавьте следующие строки:host backupdb rubackup_backuper 127.0.0.1/32 md5 host replication rubackup_backuper 127.0.0.1/32 md5
При использовании HAProxy, необходимо в файл
pg_hba.conf
добавить следующие строки:host backupdb rubackup_backuper <IP-адрес хоста HAProxy> md5 host replication rubackup_backuper <IP-адрес хоста HAProxy> md5
Вместо
peer
везде установитеmd5
. Выполните повторную загрузку конфигурации БД или перезапустите СУБД.psql -c 'select * from pg_hba_file_rules' psql -c 'select pg_reload_conf()'
Теперь модуль может выполнять полное резервное копирование и инкрементальное резервное копирование в режиме DELTA, используя режим доставки WAL по умолчанию (ARCHIVE).