Развернуть базу данных PostgreSQL (Windows)

Продукты
Все продукты

Для установки Creatio вы можете использовать следующие конфигурации баз данных:

  • удаленная СУБД (рекомендуется);

  • локальный сервер PostgreSQL.

Если у вас уже настроен сервер PostgreSQL, то шаг I можно пропустить.

Если у вас уже есть пользователь с правами администратора для авторизации, создания и изменения баз данных, то шаг II можно пропустить.

I. Установить PostgreSQL 

Поскольку PostgreSQL является свободной СУБД, то скачать файлы, необходимые для ее установки, можно на официальном сайте продукта.

На заметку. Развертывание Creatio с отказоустойчивостью не тестировалось на PostgreSQL. Подробнее о возможности создания кластеров читайте в документации PostgreSQL.

II. Создать пользователя PostgreSQL 

Установленный PostgreSQL Server требует дополнительной настройки, прежде чем вы перейдете к развертыванию Creatio. После первичной установки PostgreSQL Server вам необходимо создать для него пользователя, который сможет подключаться к базе данных через логин и пароль и будет иметь права на создание и обновление баз данных. По умолчанию такого пользователя в PostgreSQL Server нет.

Рекомендуется создать следующих пользователей PostgreSQL:

  • Пользователь с ролью ”sysadmin” и неограниченными полномочиями на уровне сервера базы данных — нужен для восстановления базы данных и настройки доступа к ней.  Далее для обозначения пользователя с ролью ”sysadmin” будет использован псевдоним pg_sysadmin.

  • Пользователь с ролью ”public” и ограниченными полномочиями — используется для настройки безопасного подключения Creatio к базе данных через аутентификацию средствами PostgreSQL. Далее для обозначения пользователя с ролью ”public” будет использован псевдоним pg_user.

Чтобы создать пользователей PostgreSQL:

  1. Откройте командную строку.

  2. Перейдите в папку с установочными файлами PostgreSQL:

    cd /D "\\path\to\PostgreSQL\folder"

    \\path\to\PostgreSQL\folder — путь к папке с установочными файлами PostgreSQL.

  3. Перейдите в папку с компонентом Command Line Tools:

    cd bin
  4. Введите пароль подключения к серверу БД в переменную окружения:

    set PGPASSWORD=pg_password

    pg_password — пароль пользователя postgres для подключения к серверу PostgreSQL.

  5. Запустите оболочку PostgreSQL от имени пользователя postgres:

    psql.exe --username postgres
  6. Создайте нового пользователя с правами администратора:

    CREATE USER pg_sysadmin;

    pg_sysadmin — пользователь, которому будут предоставлены права администратора. Нужен для восстановления базы данных и настройки доступа к ней.

  7. Настройте для пользователя pg_sysadmin права администратора:

    ALTER ROLE pg_sysadmin WITH SUPERUSER;
  8. Разрешите pg_sysadmin авторизацию:

    ALTER ROLE pg_sysadmin WITH LOGIN;
  9. Настройте пароль для pg_sysadmin:

    ALTER ROLE pg_sysadmin WITH PASSWORD 'pg_syspassword';

    pg_password — пароль пользователя  pg_sysadmin для подключения к серверу PostgreSQL.

  10. Создайте нового пользователя с ограниченными правами:

    CREATE USER pg_user;

    pg_user — пользователь для подключения к серверу PostgreSQL. Используется для подключения Creatio к базе данных.

  11. Разрешите pg_user авторизацию:

    ALTER ROLE pg_user WITH LOGIN;
  12. Настройте пароль для pg_user:

    ALTER ROLE pg_user WITH PASSWORD 'pg_password';

    pg_password — пароль пользователя pg_user для подключения к серверу PostgreSQL.

  13. Выйдите из оболочки PostgreSQL.

    \q

III. Восстановить из бэкапа базу данных PostgreSQL 

Для восстановления базы данных из резервной копии необходимы утилиты psql.exe и pg_restore.exe. Обе утилиты входят в компонент Command Line Tools PostgreSQL, который устанавливается вместе с PostgreSQL Server. Они находятся в каталоге установленного программного обеспечения PostgreSQL.

Если вы планируете использовать удаленную базу данных PostgreSQL и не устанавливать PostgreSQL Server, то выполните следующие шаги:

  1. Скачайте бинарный пакет PostgreSQL. Найти его можно на официальном сайте продукта.

  2. При установке пакета выберите также установку компонента Command Line Tools. Установка остальных компонентов опциональна.

Чтобы развернуть базу данных из бэкапа:

  1. Откройте командную строку.

  2. Перейдите в папку с установочными файлами PostgreSQL:

    cd /D "\\path\to\PostgreSQL\folder"

    \\path\to\PostgreSQL\folder — путь к папке с установочными файлами PostgreSQL.

  3. Перейдите в папку с исполнимыми модулями:

    cd bin
  4. Установите пароль подключения к серверу БД в переменную окружения:

    set PGPASSWORD=pg_syspassword

    pg_syspassword — пароль пользователя  pg_sysadmin для подключения к серверу PostgreSQL.

  5. Создайте базу данных, в которую будет выполнено восстановление резервной копии:

    psql.exe --host pg_server_address --port pg_server_port --username=pg_sysadmin --dbname=pg_dbname –c "CREATE DATABASE pg_dbname_creatio WITH OWNER = pg_user ENCODING = 'UTF8' CONNECTION LIMIT = -1"

    pg_server_address — адрес сервера PostgreSQL;

    pg_server_port — порт сервера PostgreSQL;

    pg_sysadmin — пользователь, которому предоставлены права администратора.

    pg_dbname — имя БД, в контексте которой происходит выполнение инструкций.

    Если вы еще не создали базу данных или попытка подключения завершается ошибкой “FATAL: database "pg_dbname" does not exist”, то воспользуйтесь БД “template1”, которая создается в PostgreSQL по умолчанию.

    pg_dbname_creatio — имя БД PostgreSQL, в которой будут храниться таблицы Creatio.

    pg_user — пользователь с ограниченными правами, который используется для подключения к базе данных Creatio.

  6. Если вы используете AWS RDS:

    1. Скачайте скрипт ChangeTypesOwner.sql.

    2. Замените в скрипте значение “postgres” на актуальное имя пользователя Postgres.

    3. Выполните обновленный скрипт ChangeTypesOwner.sql.

  7. Восстановите базу данных из бэкапа:

    pg_restore --host pg_server_ip --port pg_server_port --username=pg_sysadmin --dbname=pg_dbname_creatio --no-owner --no-privileges --verbose \\path\to\db.backup

    pg_server_address — адрес сервера PostgreSQL;

    pg_server_port — порт сервера PostgreSQL;

    pg_sysadmin — пользователь, которому предоставлены права администратора.

    pg_dbname_creatio — имя БД PostgreSQL, в которую будут добавлены таблицы резервной копии. Используйте имя базы данных, указанное в команде "CREATE DATABASE»   на шаге 2.

  8. Скачайте файл CreateTypeCastsPostgreSql.sql.

  9. Выполните преобразование типов:

    psql.exe --host pg_server_ip --port pg_server_port --username=pg_sysadmin --dbname=pg_dbname_creatio --file=\\путь\к\CreateTypeCastsPostgreSql.sql

    psql.exe --host pg_server_ip --port pg_server_port --username=pg_sysadmin --dbname=pg_dbname_creatio --file=\\путь\к\CreateTypeCastsPostgreSql.sql

    pg_server_ip — адрес сервера PostgreSQL;

    pg_server_port — порт сервера PostgreSQL;

    pg_sysadmin — пользователь, которому предоставлены права администратора.

    pg_dbname_creatio — имя БД, в контексте которой происходит выполнение инструкций.

    \\путь\к\CreateTypeCastsPostgreSql.sql — путь к сохраненному ранее файлу CreateTypeCastsPostgreSql.sql.

  10. В Creatio версии 7.16.3 и выше существует возможность при восстановлении из резервной копии заменить владельца БД и ее объектов на пользователя, не являющегося системным администратором (не Superuser). Вам потребуется скрипт ChangeDbObjectsOwner. Для  Postgres версии 10 и ниже: Скачать скрипт. Для  Postgres 11 и выше: Скачать скрипт.
    Чтобы восстановить БД от имени пользователя, не являющегося администратором:

    1. Замените владельца БД:

      psql.exe --host pg_server_ip --port pg_server_port --username=pg_sysadmin --dbname=pg_dbname –-command "ALTER DATABASE pg_dbname_creatio OWNER TO pg_user"

      pg_server_ip — адрес сервера PostgreSQL.
      pg_server_port — порт сервера PostgreSQL.
      pg_sysadmin — пользователь для подключения к серверу PostgreSQL. Пользователь должен являться администратором (Superuser) или иметь права на создание базы данных (команда "CREATE DATABASE").
      pg_user — новый владелец БД.
      pg_dbname_creatio — имя БД, владелец которой заменяется.

    2. Замените владельца объектов БД:

      psql.exe --host pg_server_ip --port pg_server_port --username=pg_sysadmin --dbname=pg_dbname_creatio --file=\\путь\к\ChangeDbObjectsOwner.sql --variable owner=pg_user --variable ON_ERROR_STOP=1

      pg_server_ip — адрес сервера PostgreSQL.
      pg_server_port — порт сервера PostgreSQL.
      pg_sysadmin — пользователь для подключения к серверу PostgreSQL. Пользователь должен являться администратором (Superuser) или иметь права на создание базы данных (команда "CREATE DATABASE").
      pg_user — новый владелец БД.
      pg_dbname_creatio — имя БД, владелец которой заменяется;
      \\путь\к\ChangeDbObjectsOwner.sql — путь к сохраненному ранее файлу ChangeDbObjectsOwner.sql.

Вы можете пропустить этот шаг, и в таком случае владельцем БД и ее объектов останется пользователь, от имени которого запускалась команда pg_restore. Обычно это пользователь postgres.