Postgresql 11 установка и настройка centos

Обновлено: 02.07.2024

Системы управления реляционными базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они предоставляют структурированный способ хранения, организации и доступа к информации.

PostgreSQL, или Postgres, — это система управления реляционными базами данных, которая обеспечивает имплементацию языка структурированных запросов, более известного как SQL. Она используется во многих популярных проектов, как в крупных, так и в небольших, соответствует стандартам и имеет множество продвинутых функций, таких как надежные транзакции и многопоточность без блокировок чтения.

Следуя указаниям этого руководства, вы установите последнюю версию PostgreSQL на сервер CentOS 8.

Предварительные требования

Для выполнения этого обучающего руководства вам потребуется сервер на базе CentOS 8. Этот сервер должен иметь пользователя non-root user с административными правами, а также брандмауэр, настроенный с помощью firewalld . Чтобы выполнить настройку сервера, воспользуйтесь руководством по начальной настройке сервера CentOS 8.

Шаг 1 — Установка PostgreSQL

PostgreSQL доступна в используемом по умолчанию репозитории программного обеспечения AppStream в CentOS 8 и имеет несколько версий, которые можно установить. Вы можете выбрать между этими версиями, активируя подходящий набор пакетов и зависимостей, которые соответствуют версии, которую вы хотите установить, а каждый набор называется потоком модуля.

В DNF, используемом по умолчанию в CentOS 8 менеджере пакетов, модули представляют собой наборы пакетов RPM, которые вместе составляют крупное приложение. Это необходимо, чтобы сделать установку пакетов и их зависимостей более интуитивно понятной для пользователей.

В первую очередь просмотрите список доступных потоков для модуля postgresql с помощью команды dnf :

В этом выводе вы можете видеть все три версии PostgreSQL из репозитория AppStream: 9.6 , 10 и 12 . Поток, который предоставляет Postgres версии 10, является потоком по умолчанию, о чем сигнализирует [d] в его конце. Если вы хотите установить эту версию, запустите sudo dnf install postgresql-server и перейдите к следующему шагу. Однако, хотя версия 10 до сих пор поддерживается, в этом обучающем руководстве мы будем устанавливать версию 12, последний релиз на момент написания.

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

Чтобы активировать поток модуля для Postgres версии 12, запустите следующую команду:

При появлении запроса нажмите y , а затем ENTER , чтобы подтвердить, что вы хотите активировать поток:

Чтобы активировать поток модуля версии 12, вы можете установить пакет postgresql-server для установки PostgreSQL 12 и всех зависимостей:

При появлении запроса подтвердите установку, нажав y , а затем ENTER :

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

Шаг 2 — Создание нового кластера баз данных PostgreSQL

Вам нужно создать новый кластер баз данных PostgreSQL, прежде чем вы сможете создавать таблицы и загружать в них данные. Кластер баз данных — это набор баз данных, управляемых одним экземпляром сервера. Создание кластера баз данных включает в себя создание директорий, в которых будут размещаться данные базы данных, создание таблиц общего каталога и создание баз данных template1 и postgres .

База данных template1 представляет собой шаблон сортировок, который используется для создания новых баз данных, все, что хранится в template1 , даже объекты, которые вы добавляете самостоятельно, будут размещаться в новых базах данных при их создании. База данных postgres — это база данных по умолчанию, предназначенная для пользователей, утилит и сторонних приложений.

Пакет Postgres, установленный на предыдущем шаге, содержит удобный скрипт с именем postgresql-setup , который помогает администрированию кластеров баз данных на низком уровне. Для создания кластера баз данных запустите скрипт с помощью sudo и опции --initdb :

Результат будет выглядеть следующим образом:

Теперь запустите службу PostgreSQL с помощью systemctl :

Затем воспользуйтесь systemctl еще раз, чтобы активировать запуск службы при загрузке сервера:

Результат будет выглядеть следующим образом:

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

Шаг 3 — Использование ролей и баз данных PostgreSQL

PostgreSQL использует концепцию ролей для выполнения аутентификации и авторизации клиента. В некоторых аспектах они напоминают обычные учетные записи в Unix, однако Postgres не делает различий между пользователями и группами и предпочитает использовать более гибкий термин — роль.

После установки Postgres настроена на использование аутентификации ident, что значит, что выполняется привязка ролей Postgres с соответствующей системной учетной записью Unix/Linux. Если роль существует внутри Postgres, пользователь Unix/Linux с тем же именем может выполнить вход в качестве этой роли.

В ходе установки была создана учетную запись пользователя postgres, которая связана с используемой по умолчанию ролью postgres . Чтобы использовать PostgreSQL, вы можете войти в эту учетную запись.

Существует несколько способов использования этой учетной записи для доступа к командной строке PostgreSQL.

Переключение на учетную запись postgres

Вы можете переключиться на учетную запись postgres на вашем сервере с помощью следующей команды:

Теперь вы можете немедленно получить доступ к командной строке Postgres с помощью следующей команды:

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

Закройте командную строку PostgreSQL с помощью следующей команды:

В результате вы вернетесь в командную строку Linux для учетной записи postgres. Теперь вернитесь к первоначальной учетной записи следующим образом:

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

Также вы можете запускать команды с помощью учетной записи postgres напрямую, используя sudo .

Например, в последнем примере от вас требовалось перейти в командную строку Postgres с помощью переключения на пользователя postgres и последующего запуска psql , чтобы открыть командную строку Postgres. Вы можете сделать это в один прием с помощью отдельной команды psql , используя пользователя postgres с sudo следующим образом:

Это позволит выполнить вход в Postgres без необходимости использования промежуточной командной строки bash .

Вы снова сможете выйти из интерактивного сеанса Postgres с помощью следующей команды:

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

Шаг 4 — Создание новой роли

К настоящему моменту у вас есть только роль postgres, настроенная внутри базы данных. Вы можете создавать новые роли из командной строки с командой createrole . Флаг --interactive будет запрашивать имя новой роли, а также попросит указать, будут ли у этой роли права суперпользователя.

Если вы выполнили вход в учетную запись postgres, то можете создать нового пользователя с помощью следующей команды:

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

Вы можете получить дополнительный контроль с помощью дополнительных флагов. Посмотрите возможные варианты на странице man для createuser :

В результате у вас будет новая роль Postgres, но вам предстоит еще добавить базы данных. В следующем разделе описан этот процесс.

Шаг 5 — Создание новой базы данных

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

Это означает, что если созданный вами в последнем разделе пользователь будет иметь имя sammy, эта роль попытается подключиться к базе данных, которая также называется sammy по умолчанию. Вы можете создать такую базу данных с помощью команды createdb .

Если вы используете учетную запись postgres, необходимо ввести следующее:

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

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

Теперь, когда мы создали новую базу данных, мы выполним вход в нее с помощью новой роли.

Шаг 6 — Открытие командной строки Postgres с новой ролью

Чтобы выполнить аутентификацию с помощью сущности, вам потребуется пользователь Linux с тем же именем, что и имя роли и базы данных в Postgres.

Если у вас нет соответствующего пользователя Linux, то вы можете создать его с помощью команды adduser . Вы должны воспользоваться учетной записью без прав root с привилегиями sudo (т. е. не выполняя вход в качестве пользователя postgres):

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

Либо же вы можете сделать следующее:

Эта команда будет выполнять вход автоматически.

Если вы хотите, чтобы ваш пользователь подключился к другой базе данных, вы можете сделать это, добавив флаг -d и указав базу данных, например, следующим образом:

После входа вы можете проверить данные о текущем подключении следующим образом:

В результате мы получаем следующий вывод:

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

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

Шаг 7 — Создание и удаление таблиц

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

Во-первых, создайте таблицу для хранения данных. Например, вы можете создать таблицу, где описано оборудование для детских площадок.

Базовый синтаксис этой команды выглядит следующим образом:

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

Чтобы продемонстрировать процесс, создайте простую таблицу:

Эта команда создает таблицу с описью оборудования для установки на игровых площадках. Она начинается с идентификатора оборудования, который имеет тип serial . Это тип данных представляет собой целое число с автоматическим инкрементированием. Вы также указали для этого столбца ограничение в виде PRIMARY KEY , что означает, что значения должны быть уникальными и не равны null.

Для двух из столбцов ( equip_id и install_date ) команда не указывает длину поля. Это объясняется тем, что некоторые типы столбцов не требуют указания длины, поскольку длина подразумевается в зависимости от типа значения.

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

Вы можете просмотреть вашу новую таблицу, введя следующую команду:

В результате мы получаем следующий вывод:

Ваша таблица игрового оборудования готова, но здесь есть что-то под названием playground_equip_id_seq с типом данных sequence . Это представление типа serial , который присвоен столбцу equip_id . Оно отслеживает следующий номер последовательности и создается автоматически для столбцов данного типа.

Если вы хотите только просмотреть таблицу без последовательности, можете ввести следующую команду:

В результате вы получите следующее:

На этом шаге мы создали образец таблицы. На следующем шаге мы попробуем добавить, запросить и удалить элементы в таблице.

Шаг 8 — Добавление, запрос и удаление данных в таблице

Теперь, когда у вас есть таблица, вы можете ввести в нее данные.

В качестве примера добавьте строги swing (качели) и slide (горка), вызвав таблицу, куда вы хотите добавить данные, указав столбцы и предоставив данные для каждого столбца:

Вы должны быть внимательны при вводе данных, чтобы не допустить нескольких общих проблем. Во-первых, оборачивайте в кавычки не названия столбцов, а значения в столбцах.

Еще один момент, который необходимо учитывать, состоит в том, что вы не должны указывать значения для столбца equip_id . Это вызвано тем, что оно автоматически генерируется при создании новой строки в таблице.

Получите добавленную вами информацию, введя следующую команду:

Результат будет выглядеть следующим образом:

Вы можете убедиться, что столбец equip_id уже заполнен успешно, а все другие данные были организованы корректно.

Если же строка slide в таблице разрывается, вы можете удалить строку из таблицы, использовав следующую команду:

Запросите таблицу еще раз:

Вы увидите следующее:

Вы видите, что ваша горка уже не является частью таблицы.

Теперь, когда вы добавили и удалили элементы в таблице, вы можете попробовать добавить и удалить столбцы.

Шаг 9 — Добавление и удаление столбцов из таблицы

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

Если вы снова просмотрите данные таблицы, то увидите, что новый столбец был добавлен (но не были добавлены данные):

Вы увидите следующее:

Удаление столбца является таким же простым. Если вы обнаружите, что ваши работники используют отдельный инструмент для отслеживания истории обслуживания, то можете удалить столбец, введя следующую команду:

Эта команда удаляет столбец last_maint и любые значения внутри него, но оставляет все другие данные нетронутыми.

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

Шаг 10 — Обновление данных в таблице

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

Вы можете обновить значения существующей записи, запросив нужную вам запись и установите для столбца значение, которое вы хотите использовать. Вы можете запросить запись swing (это будет соответствовать каждой записи swing в таблице) и изменить цвет на red :

Вы можете убедиться, что операция прошла успешно, запросив данные еще раз:

Вы увидите следующее:

Как видите, ваша горка теперь имеет красный цвет .

Заключение

Вы успешно настроили PostgreSQL на вашем сервере CentOS 8. Однако вам еще очень многое предстоит узнать о Postgres. Ниже вы найдете несколько руководств по использованию Postgres:

date

11.10.2019

directory

CentOS, Linux

comments

Один комментарий

В данной статье мы проведем установку СУБД PostgreSQL 11 в Linux CentOS 7, выполним базовую настройку сервера и СУБД, рассмотрим основные параметры конфигурационного файла, а так же способы тюнинга производительности. PostgreSQL – популярная свободная объектно-реляционная система управления базами данных. Не смотря на то, что она не так распространена как MySQL/MariDB, она является самой профессиональной.

Сильные стороны PostgreSQL:

  • Полное соответствие стандартам SQL;
  • Высокая производительность за счет управления многовариантным параллелизмом (MVCC);
  • Масштабируемость (широко используется в высоконагруженных средах);
  • Поддержка множества языков программирования;
  • Надёжные механизмы транзакций и репликации;
  • Поддержка данных в формате JSON.

Установка PostgreSQL в CentOS/RHEL

Хотя PostgreSQL можно установить из базового репозитория CentOS, мы выполним установку репозитория от разработчиков, так как в нем всегда присутствует актуальная версия пакета.

Первым шагом устанавливаем репозиторий PosgreSQL (на данный момент он устанавливается следующим образом):

В данном репозитории есть как самые новые версии PostgreSQL, так и более старые версии. Информация о репозитории выглядит следующим образом:

подключение репозитория PosgreSQL

Установим последнюю доступную версию версию (PostrgeSQL 11) c помощью yum.

yum install postgresql11-server -y

В процессе установки устаналивается сам сервере PostgreSQL и необходимые библотеки:

После установки пакетов, нужно произвести инициализацию базы данных:

Так же сразу добавим сервер БД в автозагрузку и запустим его:

systemctl enable postgresql-11

systemctl start postgresql-11

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

Если вам нужен доступ к PostgreSQL снаружи, вам нужно открыть порт TCP/5432, в стандартном firewall в Centos 7:

Если включен SELinux, выполните:

Подключение к PostgreSQL, создание БД, пользователя

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

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

Чтобы подключиться к серверу postgres нужно ввести команду:

Открылась консоль PostgreSQL. Покажем несколько простых примеров управления PostgreSQL из консоли psql.

Т.к. любой пользователь системы может авторизоваться в postrgesql, сначала нужно изменить пароль пользователя postgres.

ALTER ROLE postgres WITH PASSWORD 'super_str0ng_pa$$word';

Сразу создадим новую базу данных, пользователя и дадим ему полные права на эту БД:

Подключиться к БД:

Вывести список таблиц:

Вывести список запросов к базе:

Сбросить все подключения к базе:

Информацию о текущей сессии можно получить так:

Для завершения работой с консолью psql, выполните:

Как вы уже заметили, синтаксис не отличается от той же MariaDB или MySQL и поэтому особо останавливаться на однотипных командах мы не будем.

Отметим, что для более удобного управления базами PostgreSQL из веб-интерфейса рекомендуется использовать pgAdmin4 (написан на Python и Javascript/jQuery). Это аналог привычному многим веб разработчикам PhpMyAdmin.

pgAdmin4 веб интерфейс управления

Основные параметры конфигурационных файлов PostgreSQL

Файлы конфигурации postgresql находятся в директории /var/lib/pgsql/11/data:

  • postgresql.conf — непосредственно сам файл конфигурации postgresql;
  • pg_hba.conf — файл с настройками доступа. В данном файле, можно выставлять различные ограничения для пользователей, устанавливать политику подключения к БД;
  • pg_ident.conf — этот файл используется при идентификации клиентов по протоколу ident.

Чтобы запретить локальным пользователям вход в postgres без авторизации, в файле pg_hba.conf укажите:

Рассмотрим наиболее важные параметры в конфигурационном файле postgresql.conf:

Резевное копирование и восстановление БД в PostgreSQL

Создать резервную копию в PostgreSQL БД можно несколькими способами. Рассмотрим самый простой вариант.

Для начала проверим, какие БД запущены на сервере:

postgres - вывести список баз данных

У нас имеются 4 базы данных, 3 из которых системные (postgres и template).

Ранее мы создавали БД с именем “mydbtest”, на ее примере и выполним резервное копирование.

Один из способов резервного копирования, это выполнение его с помощью утилиты pg_dump:

Чтобы восстановить указанный дамп в нужную БД, можно воспользоваться утилитой psql:

sudo -u postgres psql mydbtest < /root/dupm.sql

резервное копирование postgres с помощью psql

Так же можно создать бэкап в специальном формате дампа и сжатом с применением gzip:

sudo -u postgres pg_dump -Fc mydbtest > /root/dumptest.sql

sudo -u postgres pg_restore -d mydbtest /root/dumptest.sql

Более расширенные настройки можно посмотреть в справке по данным утилитам:

man psql
man pg_dump
man pg_restore

Оптимизация и тюниг PostgreSQL

В предыдущей статье о MariaDB, мы показывали, как можно привести практически к идеалу параметры конфигурационного файла my.cnf с помощью тюнеров. Для PostgreSQL существует, хотя правильнее сказать существовала такая утилита как PgTun, но к сожалению она уже давно не обновляется. В тоже время есть масса онлайн сервисов, с помощью которых вы можете настроить оптимальную конфигурацию для вашего PostgreSQL. Мне нравится сервис pgtune.leopard.in.ua.

Интерфейс очень прост. Вам нужно указать параметры вашего сервера (профиль, процессоры, память, тип дисков) и нажать кнопку “Generate”. В результате вам будет предложен вариант конфигурационного файла postgresql.conf с рекомендуемыми значениями основных параметров СУБД.

Например, для VPS SSD сервера с 2 Гб оперативной памятью, 2 CPU для запуска нескольких сайтов рекомендуются следующие настройки в postgresql.conf:

pgtune для postgresql

И это на самом деле не единственный ресурс, на момент написания статьи, были достпны аналогичные сервисы:

С помощью подобных сервисов, можно быстро настроить начальные параметры СУБД для вашего оборудования и выполняемых задач. В дальнейшем уже нужно опираться не только на ресурсы сервера, но и анализировать в целом работу БД, ее размер, количество коннектов и на основе этого, выполнять дальнейшую тонкую донастройку параметров PostgreSQL.

Если все нормально должны увидеть что postgres запущен.


Настройка

Сейчас в вашей СУБД есть только один пользователь — postgres. Рекомендуется не использовать данного пользователя для работы со своими базами данных, а создавать для каждой базы отдельного пользователя (или несколько при необходимости).
Задаем пароль на пользователя postgres


Подключаемся к серверу postgres


Создаем нового пользователя

Вместо username и password подставьте свои имя пользователя и пароль.

Файлы конфигурации находятся в каталоге /var/lib/pgsql/data, в котором находятся два основных конфигурационных файла.

Редактируем файл postgresql.conf.

Для начала разрешим подключение к СУБД из локальной сети (по умолчанию подключение разрешено только с localhost).
Раскомментируем строку



Теперь разрешим подключение из локальной сети с любых хостов и к любым БД, для этого в конец файла pg_hba.conf добавим:

PostgreSQL 11

Установка

Запускаем сервер и проверяем что все нормально


Настройка

Первоначальные настройки пользователей и доступа к СУБД аналогичны рассмотренным выше. Только конфигурационные файлы находятся в директории /var/lib/pgsql/11/data/. После внесения изменений не забудьте перезапустить postgres командой

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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

Важно

При установке пакета postgrespro-std-11 могут быть удалены существующие инсталляции продуктов на базе Postgres Pro и PostgreSQL . И напротив, установленный пакет Postgres Pro может быть автоматически удалён, если вы впоследствии развернёте другой продукт на базе PostgreSQL . Данный пакет не нужно устанавливать в процессе обновления или миграции, а также если вы планируете разворачивать в одной системе несколько инсталляций.

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

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

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

Минимальные системные требования для установки Postgres Pro , создания кластера баз данных и запуска сервера:

Процессор с частотой 1 ГГц

Для вспомогательных компонентов или данных потребуется дополнительное дисковое пространство.

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

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

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

Системы на базе Debian: Debian 8/9/10/11, Ubuntu 18.04/20.04/20.10/21.04, Astra Linux «Смоленск» 1.5/1.6/1.7, Astra Linux «Орёл» 2.12

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

Примечание

Двоичные пакеты Postgres Pro используют библиотеку tzdata , предоставляемую операционной системой, поэтому важно, чтобы в системе была установлена последняя её версия. В случае использования устаревшей библиотеки tzdata значения времени в вашей базе данных могут быть некорректными.

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

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

Примечание

По умолчанию конфигурация базы данных настраивается под устанавливаемый продукт Postgres Pro . Если вам нужна другая настройка сервера базы данных, выберите расширенную установку и воспользуйтесь аргументом tune команды pg-setup initdb .

После завершения установки вы можете запустить psql от имени пользователя postgres и подключиться к только что созданной базе данных, находящейся в каталоге данных /var/lib/pgpro/std-11/data .

Так как база данных по умолчанию создаётся скриптом pg-setup , путь к каталогу данных сохраняется в файле /etc/default/postgrespro-std-11 . Все последующие команды pg-setup , а также любые команды, управляющие службой Postgres Pro , будут нацелены именно на эту базу данных.

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

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

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

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

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

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

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

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

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

Аргумент tune выбирает вариант конфигурации базы данных.

Примечание

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

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

Так как база данных по умолчанию создаётся скриптом pg-setup , путь к каталогу данных сохраняется в файле /etc/default/postgrespro-std-11 . Все последующие команды pg-setup , а также любые команды, управляющие службой Postgres Pro , будут нацелены именно на эту базу данных.

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

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

Примечание

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

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

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

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

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

Важно

При установке пакета postgrespro-std-11 могут быть удалены существующие инсталляции продуктов на базе Postgres Pro и PostgreSQL . И напротив, установленный пакет Postgres Pro может быть автоматически удалён, если вы впоследствии развернёте другой продукт на базе PostgreSQL .

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

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

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

Этот пакет обеспечивает поддержку JIT -компиляции.

Этот пакет предоставляется только для систем Debian и Ubuntu, Astra Linux «Смоленск» 1.6/1.7, Astra Linux «Орёл» 2.12, ALT Linux 8/9, CentOS 7/8, SLES 15 и RHEL 7/8.

Кроме этого, имеются отдельные пакеты с несколькими дополнительными модулями, собранные специально для совместимости с Postgres Pro Standard:

Таблица 16.2. Сторонние пакеты, собранные для Postgres Pro Standard

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В системах ALT Linux выполните следующую команду:

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

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

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

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

Если вы хотите компилировать расширения Postgres Pro с поддержкой встраивания JIT, выполните дополнительные требования:

Установите пакет LLVM для разработки и компилятор Clang. Вы должны выбрать пакеты той же версии, какая использовалась для сборки пакета postgrespro-std-11-jit , устанавливаемом на сервере. Определить версию, требующуюся для текущего выпуска Postgres Pro , вы можете по значению CLANG в файле /opt/pgpro/std-11/lib/pgxs/src/Makefile.global .

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

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

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

Важно

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

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

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

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

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

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

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

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

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

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

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

16.1.6. Замечания о совместимости с антивирусами

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

Каталог PGDATA с основными данными кластера (обычно /var/lib/pgpro/std-11/data или другой каталог, заданный в параметрах initdb )

Читайте также: