Настройка PostgreSQL
Подготовка к использованию модулей резервного копирования
Для выполнения резервного копирования баз данных и таблиц при помощи СРК RuBackup в СУБД выполните следующие действия:
-
Создайте роль RuBackup — например,
rubackup_backuper
; -
Создайте базу данных для выполнения процедур резервного копирования — например,
backupdb
; -
Выполните настройку конфигурации сервера PostgreSQL;
-
Включите расширение
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
Для обеспечения безопасности модули используют сквозное подключение к целевой БД, осуществляемое при помощи расширения 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
. Пример наполнения:
-
Управление правами роли в ручном режиме при помощи консольной утилиты. При помощи этой утилиты можно выдать права ранее созданному пользователю на выполнение
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 для конфигурационных файлов рекомендуется определить строгие права только для суперпользователя ( |
После выполнения подготовки сервера СУБД PostgreSQL к выполнению резервного копирования необходимо перезапустить клиент RuBackup:
rubackup_client stop
rubackup_client start
В результате клиент должен сообщить о том, что модули rb_module_pg_dump_database
и rb_module_pg_dump_table
готовы к работе.