Настройка PostgreSQL

Подготовка к использованию модулей резервного копирования

Для выполнения резервного копирования баз данных и таблиц при помощи СРК RuBackup в СУБД выполните следующие действия:

  1. Создайте роль RuBackup — например, rubackup_backuper;

  2. Создайте базу данных для выполнения процедур резервного копирования — например, backupdb;

  3. Выполните настройку конфигурации сервера PostgreSQL;

  4. Включите расширение dblink для роли RuBackup.

Создание роли RuBackup

Для обеспечения безопасного выполнения операций с базами данных и таблицами необходимо создать роль с ограниченным набором прав. Чтобы создать роль, выполните следующие действия:

  • Подключитесь к СУБД от имени администратора:

sudo -u postgres psql
  • Создайте роль RuBackup:

CREATE ROLE <role_name> WITH LOGIN password <role_password>

Создание специальной базы данных

Для того, чтобы у ранее созданного пользователя была точка входа, необходимо создать отдельную базу данных. Чтобы создать данную БД выполните следующие действия:

  • Подключитесь к СУБД от имени администратора:

sudo -u postgres psql
  • Создайте базу данных:

CREATE DATABASE <database_name>
  • Назначьте ранее созданную роль владельцем базы данных:

ALTER DATABASE <database_name> OWNER TO <role_name>

Настройка конфигурации сервера PostgreSQL

Для подготовки СУБД PostgreSQL к выполнению резервного копирования при помощи СРК RuBackup необходимо выполнить следующие действия:

  • Установите метод подключения peer для пользователя postgres. Для этого необходимо внести изменения в файл pg_hba.conf. Чтобы найти этот файл используйте вызовы:

su postgres
psql -c 'SHOW hba_file'

Пример установки метода в hba_file.conf:

Database administrative login by Unix domain socket
local   all           postgres                                peer
  • Установите для роли RuBackup метод подключения md5. Данный метод должен распространяться только на ранее созданную базу данных. Пример настройки:

host    backupdb       rubackup_backuper       127.0.0.1/32    md5
  • Чтобы изменения вступили в силу без перезагрузки сервера используйте данные команды:

Проверить файл на наличие опечаток:

psql -c 'SELECT * from pg_hba_file_rules;'

Применить изменения:

psql -c ' SELECT pg_reload_conf();'

Для обеспечения безопасности модули используют сквозное подключение к целевой БД, осуществляемое при помощи расширения dblink. Чтобы включить расширение для роли RuBackup выполните подключение к ранее созданной базе данных от имени администратора:

sudo -u postgres psql -d <database_name>
CREATE EXTENSION dblink

Управление правами роли RuBackup

Для управления правами роли RuBackup используйте следующие команды:

  • Перед запуском модулем rb_module_pg_dump процесса восстановления резервной копии нужно предоставить пользователю rubackup_backuper привилегии superuser, выполнив команду:

alter user rubackup_backuper with superuser

По завершении восстановления выданные ранее привилегии superuser необходимо отнять, выполнив команду:

alter user rubackup_backuper with nosuperuser
  • Для выполнения резервного копирования БД, содержащей большие объекты, нужно в файле postgresql.conf раскомментировать параметр lo_compat_privileges и установить для него значение on:

lo_compat_privileges = on
  • В некоторых случаях роли RuBackup требуется выдать временные права на выполнение команд SELECT и CREATE. Например, когда восстанавливаемая БД уже существует и необходимо создать ее копию вместо аварийного завершения работы.

В СРК RuBackup предусмотрены автоматический и ручной способы выдачи прав роли:

  • Автоматическое управление правами роли на основе sql-скриптов, заполняемых вручную. Для использования автоматического режима управления правами роли необходимо заполнить скрипт /opt/rubackup/scripts/rb_pg_dump_script.sql. Пример наполнения:

Image2
  • Управление правами роли в ручном режиме при помощи консольной утилиты. При помощи этой утилиты можно выдать права ранее созданному пользователю на выполнение SELECT и CREATE

Для того чтобы управлять правами роли в ручном режиме выполните следующее:

  • Запустить консольную утилиту /opt/rubackup/bin/rb_pg_dump_script. Утилита находится по пути /opt/rubackup/bin/rb_pg_dump_script.

/opt/rubackup/scripts/rb_pg_dump_script -1 -U admin_name -p admin_password -B backup_user -H db_host -P db_port -S schema
-1

выдает права ранее созданному пользователю на выполнение команд SELECT и CREATE в целевой БД;

-2

снимает права ранее созданному пользователю;

-U admin_name

имя администратора кластера Postgres;

-p admin_password

пароль администратора кластера;

-B backup_user

имя пользователя RuBackup;

-H db_host

хост сервера базы данных или каталог сокетов;

-P db_port

порт базы данных;

-S schema

схема БД, к которой принадлежат копируемые таблицы.

При необходимости отзыва у роли ранее выданных прав, запустите утилиту с опцией -2

/opt/rubackup/scripts/rb_pg_dump_script -2 -U admin_name -p admin_password -B backup_user -H db_host -P db_port -S schema

Завершение подготовки хоста с СУБД PostgreSQL

Перед созданием правил и дальнейшей работой с модулями заполните их конфигурационные файлы актуальной информацией.

  • Для резервного копирования отдельной БД заполните файл /opt/rubackup/etc/rb_module_pg_dump_database.conf следующим образом (данные приведены для примера):

backup_user: ‘rubackup_backuper’
password: ‘12345’
backup_db: ‘backupdb’
host: ‘localhost’
port: ‘5432’
pg_dump: ‘/user/bin/pg_dump’
pg_restore: ‘/usr/bin/pg_restore’
backup_user

имя ранее созданной роли RuBackup;

password

пароль роли RuBackup;

backup_db

имя базы данных роли RuBackup;

host

хост сервера базы данных или каталог сокетов;

port

порт базы данных;

pg_dump

полный путь к утилите pg_dump;

pg_restore

полный путь к утилите pg_restore.

Для резервного копирования отдельной таблицы заполните файл /opt/rubackup/etc/rb_module_pg_dump_table.conf следующим образом:

backup_user: ‘rubackup_backuper’
password: ‘12345’
backup_db: ‘backupdb’
host: ‘localhost’
port: ‘5432’
pg_dump: ‘/user/bin/pg_dump’
pg_restore: ‘/usr/bin/pg_restore’
backup_user

имя ранее созданной роли RuBackup;

password

пароль роли RuBackup;

backup_db

имя базы данных роли RuBackup;

host

хост сервера базы данных или каталог сокетов;

port

порт базы данных;

pg_dump

полный путь к утилите pg_dump;

pg_restore

полный путь к утилите pg_restore.

Во избежание раскрытия пароля роли RuBackup для конфигурационных файлов рекомендуется определить строгие права только для суперпользователя (chmod 0600).

После выполнения подготовки сервера СУБД PostgreSQL к выполнению резервного копирования необходимо перезапустить клиент RuBackup:

rubackup_client stop
rubackup_client start

В результате клиент должен сообщить о том, что модули rb_module_pg_dump_database и rb_module_pg_dump_table готовы к работе.