16.1. Установка Postgres Pro в Linux

Для систем на базе Linux Postgres Pro поставляется в виде двоичных пакетов. Все двоичные дистрибутивы Postgres Pro состоят из нескольких пакетов. Структура пакетов отличается от структуры ванильного PostgreSQL и поддерживает следующие режимы установки:

  • Быстрая установка и настройка. Пакет postgrespro-std-10 устанавливает и настраивает все компоненты, необходимые для получения готовой к использованию конфигурации, как клиентских, так и серверных компонентов. Выберите этот вариант, если вы планируете установить только один экземпляр Postgres Pro и вас не беспокоят возможные конфликты с другими продуктами на базе PostgreSQL.

  • Расширенная установка. Вы можете выбрать любые пакеты, требующиеся для ваших целей, включая пакеты для разработчиков. Этот вариант требует ручной настройки, поэтому для него необходимо хорошо разбираться в Linux и понимать архитектуру PostgreSQL. Это единственно возможный вариант, если вы планируете реализовать один из следующих сценариев использования Postgres Pro:

    • Установка одновременно нескольких версий Postgres Pro либо установка вместе с другими продуктами на базе PostgreSQL.

    • Обновление с другой версии или миграция с другого продукта на базе PostgreSQL.

    • Управление сервером Postgres Pro с использованием программных средств обеспечения высокой степени доступности, таких как pacemaker, вместо стандартных системных механизмов управления службами.

16.1.1. Поддерживаемые дистрибутивы Linux

Двоичные пакеты Postgres Pro предоставляются для следующих систем на базе Linux:

  • Системы Red Hat Enterprise Linux (RHEL) и производные от них: CentOS 6/7, Red Hat Enterprise Linux 6/7, Oracle Linux 6/7, Rosa Enterprise Linux Server 6, РОСА «КОБАЛЬТ» на платформе РОСА 6/7, Гослинукс 6, МСВСфера 6.3

  • Системы на базе Debian: Debian 7/8/9, Ubuntu 14.04/16.04/17.04/17.10, Astra Linux «Смоленск» 1.4/1.5

  • Альт Линукс 8, Альт Линукс 7.0, Альт Линукс СПТ 6.0/7.0

  • SUSE Linux Enterprise Server 11/12.1

16.1.2. Быстрая установка и настройка

Если вам нужно установить только один экземпляр Postgres Pro и вы не собираетесь использовать никакие другие продукты на базе PostgreSQL в вашей системе, вы можете использовать режим быстрой установки. Типичная процедура установки в этом случае выглядит так:

  1. Подключите репозиторий пакетов, предназначенный для вашей операционной системы. Конкретные адреса репозиториев и команды для их подключения в поддерживаемых дистрибутивах Linux вы можете найти на Странице загрузки для соответствующей версии Postgres Pro.

  2. Установите пакет postgrespro-std-10. При этом по зависимостям установятся все требуемые компоненты, вместе с документацией, будет создана база данных по умолчанию, запущен сервер баз данных и настроен автозапуск сервера при загрузке системы, а все предоставляемые программы станут доступными в пути PATH. В режиме быстрой установки кластер баз данных инициализируется с включёнными контрольными суммами.

После завершения установки вы можете запустить psql от имени пользователя postgres и подключиться к только что созданной базе данных.

16.1.3. Расширенная установка

Разделение дистрибутива на несколько пакетов позволяет произвести инсталляцию по-разному для различных применений: для серверов баз данных, клиентских систем или рабочих станций разработчиков. Такие инсталляции необходимо настраивать вручную, но это даёт дополнительную гибкость при использовании продукта. Вы можете установить несколько версий Postgres Pro параллельно, а также вместе с другими продуктами PostgreSQL. В частности, это может потребоваться при осуществлении обновления или при миграции с другого продукта на базе PostgreSQL.

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

  1. Подключите репозиторий пакетов, предназначенный для вашей операционной системы. Конкретные адреса репозиториев и команды для их подключения в поддерживаемых дистрибутивах Linux вы можете найти на Странице загрузки для соответствующей версии Postgres Pro.

  2. Выберите пакеты Postgres Pro, требующиеся для ваших целей, и установите их с помощью стандартных для вашего дистрибутива Linux команд. Доступные пакеты перечислены в Таблице 16.1.

    В результате все файлы будут установлены в каталог /opt/pgpro/std-10.

  3. Запустите утилиту pg-wrapper, входящую в состав пакета postgrespro-std-10-client, чтобы добавить и клиентские, и серверные программы в путь поиска PATH, а также включить страницы man по SQL в файл конфигурации страниц man:

    pg-wrapper links update

    Подробнее о разрешении возможных конфликтов рассказывается в pg-wrapper.

  4. Если вы устанавливаете пакет postgrespro-std-10-server, выполните следующую процедуру настройки сервера:

    1. Создайте начальную базу данных, запустив вспомогательный скрипт pg-setup от имени root с ключом initdb:

      /opt/pgpro/std-10/bin/pg-setup initdb [параметры_initdb]

      Здесь initdb_options — обычные параметры программы initdb.

      Примечание

      pg-setup инициализирует кластер баз данных со включёнными контрольными суммами. Если для вас это нежелательно, не используйте pg-setup для инициализации кластера, а запустите непосредственно initdb.

      Скрипт pg-setup выполняет административные операции с базами данных от имени пользователя postgres. Если вы не укажете никакие параметры initdb, база по умолчанию создаётся в каталоге /var/lib/pgpro/std-10/data с параметрами локализации, определяемыми переменной окружения LANG текущего сеанса. Переменные окружения LC_* при этом игнорируются.

    2. Запустите сервер с помощью pg-setup, следующим образом:

      pg-setup service start

      Как и сервер ванильного PostgreSQL, сервер Postgres Pro работает под именем пользователя postgres.

      Примечание

      По умолчанию автоматический запуск сервера отключён, чтобы вы могли вручную управлять восстановлением базы данных после перезагрузки системы. Однако вы можете настроить и автоматический запуск сервера Postgres Pro. За подробностями обратитесь к Подразделу 16.1.3.2.

16.1.3.1. Выбор устанавливаемых пакетов

В следующей таблице перечислены все имеющиеся пакеты Postgres Pro.

Таблица 16.1. Пакеты Postgres Pro

Пакет

Описание

postgrespro-std-10

Пакет верхнего уровня, устанавливающий и настраивающий Postgres Pro для серверных и клиентских систем. Не используйте этот пакет при обновлении или миграции.

postgrespro-std-10-client

Стандартные клиентские приложения, такие как psql и pg_dump.

postgrespro-std-10-libs

Общие библиотеки, требующиеся для развёртывания клиентских приложений, включая libpq; библиотеки времени выполнения для обработчика ECPG.

postgrespro-std-10-server

Сервер Postgres Pro и серверный язык программирования PL/pgSQL.

postgrespro-std-10-contrib

Дополнительные расширения и программы, разворачиваемые на серверах баз данных.

postgrespro-std-10-pgprobackup

Утилита pg_probackup.

postgrespro-std-10-devel

Заголовочные файлы и библиотеки для разработки клиентских приложений и серверных расширений.

В системах на базе Debian этот пакет называется postgrespro-std-10-dev.

postgrespro-std-10-plperl

Реализация языка Perl для программирования на стороне сервера.

postgrespro-std-10-plpython

Реализация языка Python для программирования на стороне сервера.

postgrespro-std-10-plpython3

Реализация языка Python 3 для программирования на стороне сервера.

Этот пакет представлен только для систем на базе Debian.

postgrespro-std-10-pltcl

Реализация языка Tcl для программирования на стороне сервера.

postgrespro-std-10-docs

Документация на английском языке.

postgrespro-std-10-docs-ru

Документация на русском языке.

postgrespro-std-10-test

Тестовые скрипты для сервера.

Этот пакет представлен только для систем на базе RHEL и SUSE.


Кроме того, Postgres Pro предоставляет отдельные пакеты с отладочной информацией для некоторых операционных систем:

  • В системах на базе Debian это пакет postgrespro-std-10-dbg.

  • В системах на базе RHEL это пакет postgrespro-std-10-debuginfo.

  • В Альт Линукс для всех пакетов с двоичными файлами имеются соответствующие пакеты -debuginfo.

Для серверных инсталляций требуются как минимум следующие пакеты:

  • postgrespro-std-10-server

  • postgrespro-std-10-client

  • postgrespro-std-10-libs

Для использования дополнительных расширений Postgres Pro вы должны также установить пакет postgrespro-std-10-contrib. В системах на базе Debian пакет postgrespro-std-10-server зависит от пакета postgrespro-std-10-contrib, поэтому последний должен всегда устанавливаться вместе с сервером.

Для клиентских инсталляций обычно достаточно установить пакеты postgrespro-std-10-client и postgrespro-std-10-libs. Если вы используете независимые приложения и вам не нужны стандартные клиентские утилиты, такие как psql, вы можете установить только пакет postgrespro-std-10-libs.

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

  • postgrespro-std-10-libs

  • postgrespro-std-10-devel/ postgrespro-std-10-dev

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

16.1.3.2. Настройка автоматического запуска сервера

Если вы производите расширенную установку, автоматический запуск сервера по умолчанию отключается. После создания базы данных по умолчанию вы можете настроить автоматический запуск сервера при загрузке системы, используя имеющиеся в вашей операционной системе механизмы управления службами или сторонние средства обеспечения высокой степени доступности. Для облегчения этой задачи в пакете postgrespro-std-10-server поставляется скрипт pg-setup, помещаемый в каталог /opt/pgpro/std-10/bin.

Для настройки автозапуска сервера запустите скрипт pg-setup со следующими параметрами:

pg-setup service enable

Если требуется, вы можете отключить автозапуск сервера, используя тот же скрипт:

pg-setup service disable

Вы также можете использовать системные средства управления службами, непосредственно задействуя скрипты для систем инициализации SysV init.d и systemd, предоставляемые в пакете postgrespro-std-10-server. В зависимости от дистрибутива Linux Postgres Pro поддерживает следующие механизмы управления службами:

Дистрибутив Linux

Предоставляемые скрипты

RHEL 7, SLES 12.1

файл службы systemd

RHEL 6 и совместимые дистрибутивы, SLES 11, Альт Линукс 6

скрипт init.d (в стиле SysV)

Debian, Ubuntu, Альт Линукс 7/8

И файл службы systemd, и скрипт init.d в стиле SysV

Для включения автоматического запуска сервера средствами systemd выполните следующую команду:

systemctl enable postgrespro-std-10.service

Для использования скрипта init.d в стиле SysV:

  • В системах RHEL 6, SLES 11 и Альт Линукс воспользуйтесь командой chkconfig для включения скрипта postgrespro-std-10 на соответствующем уровне выполнения. Полный синтаксис этой команды можно найти на странице man chkconfig.

  • В системах Debian воспользуйтесь скриптом update-rc.d. За подробностями обратитесь к соответствующей странице man.

16.1.4. Установка на рабочих станциях разработчиков

Хотя может быть достаточно установить пакеты postgrespro-std-10-libs и postgrespro-std-10-devel/postgrespro-std-10-dev, обычно на машинах разработчиков удобно иметь и установленный сервер. Для быстрой установки вы можете воспользоваться пакетом postgrespro-std-10, который автоматически настроит предоставляемые клиентские и серверные программы, а также создаст начальную базу данных. Однако если вы планируете использовать одновременно несколько продуктов на базе PostgreSQL, следуйте инструкциям по расширенной установке, приведённым в Подразделе 16.1.3.

Чтобы скомпилировать программы с библиотеками Postgres Pro, используя утилиту pg_config, поставляемую с Postgres Pro, необходимо, чтобы её путь был указан в переменной PATH до путей каких-либо других версий pg_config. Если в вашей системе нет других версий pg_config, вы можете воспользоваться утилитой pg-wrapper, поставляемой в пакете postgrespro-std-10-client, для создания символической ссылки на pg_config в стандартном каталоге исполняемых файлов.

Для компиляции программ с использованием pkg-config добавьте путь /opt/pgpro/std-10/lib/pkgconfig/ в переменную среды PKG_CONFIG_PATH.

16.1.4.1. Использование сторонних программ с Postgres Pro

Чтобы использовать сервер Postgres Pro с клиентской программой из стороннего продукта, вы можете установить версию библиотек PostgreSQL, с которыми компилировалась эта программа. Например, если программа поставляется в составе ванильного PostgreSQL, вам может потребоваться установить пакеты libpq или postgresql-libs, предоставляемые для вашего дистрибутива Linux. В этом случае программа, возможно, не будет использовать некоторые новые возможности сервера Postgres Pro, но скорее всего она и не поддерживает их.

Если вы предпочитаете использовать библиотеки Postgres Pro со сторонней программой или хотели бы задействовать новую возможность, которая не требует изменения самого клиентского приложения, например, проверку подлинности SCRAM, вы можете перекомпилировать вашу программу с библиотеками Postgres Pro.

Важно

Если программа скомпилирована с одной версией libpq, а используется с другой, её стабильная работа не гарантируется.

Если вы создаёте пакеты .rpm или .deb для вашей программы, рекомендуется сделать следующее:

  1. Добавьте путь /opt/pgpro/std-10/bin в переменную PATH в сборочных скриптах (в файле .spec или debian/rules).

  2. Добавьте postgrespro-std-10-dev в теги BuildDepends или BuildRequires описания пакета вашей программы.

Тем самым вы обеспечите вызов в процессе создания пакетов нужной версии pg_config при каждой пересборке пакета исходного кода.

16.1.5. Использование нескольких экземпляров Postgres Pro

Для запуска нескольких экземпляров сервера Postgres Pro с разными каталогами данных нужно проделать следующее:

  1. Установите и настройте Postgres Pro, следуя указаниям в Подразделе 16.1.2 или Подразделе 16.1.3.

  2. После создания начальной базы данных запустите initdb и укажите путь к другому каталогу данных и любые другие параметры, требующиеся для инициализации другого экземпляра сервера.

  3. Задайте другие порты для экземпляров серверов в соответствующих файлах postgresql.conf, чтобы не допустить конфликтов.

  4. Если требуется, настройте автоматический запуск сервера следующим образом:

    1. Создайте копию файла /etc/init.d/postgrespro-std-10 или /lib/systemd/system/postgrespro-std-10.service с другим именем и поменяйте в ней путь к каталогу данных.

    2. Включите автоматический запуск сервера, используя скрипты автозапуска, предоставленные для вашего системного механизма управления службами, вместо pg-setup, как описано в Подразделе 16.1.3.2. Убедитесь в том, что вы используете переименованные копии скриптов, созданные на шаге 1.

16.1.6. Миграция на Postgres Pro

Разные основные версии Postgres Pro, а также разные продукты на базе PostgreSQL, даже имеющие одинаковую основную версию, могут иметь несовместимые на двоичном уровне базы данных, так что просто заменить программу сервера и продолжить его использование в общем случае невозможно. Чтобы преобразовать базы данных с более старой основной версии, вам потребуется выполнить выгрузку/загрузку данных с помощью pg_dumpall или использовать pg_upgrade. Первый вариант безопаснее, а второй быстрее и может значительно ускорить процесс обновления для больших баз данных.

Инструкции по обновлению для определённой версии вы найдёте в Замечаниях к выпуску для этой версии Postgres Pro.