При анализе статей и видео, набравших тысячи просмотров по установке Postgresql, я заметил характерную особенность: все выкладки на эту тему годятся в качестве ознакомления с Postgresql и показывают, что установить Postgres в принципе возможно.
Однако, в продуктивных и равных с ним тестовых средах никто не совмещает на одном диске данные операционной системы и СУБД, как это везде показывается!
Разумный подход к установке Postgresql - это разделить сущности самой ОС и Postgresql, а так же разделить сущности самой СУБД Postgresql по разным дискам. Почему именно так? Потому, что это существенно облегчает мониторинг СУБД Postgresql, выявление и восстановление СУБД Postgresql в случае сбоя, а так же увеличение производительности.
Вот пример подготовленной виртуальной машины для установки Postgresql:
Видно, что для каждой сущности имеется свои разделы: ОС и Postgresql, разделенная по разным дискам: /backup, /wal, /data, /log, а так же смонтированный в оперативной памяти диск /tempdb:
Проведем установку Postgres Pro standart 15 версии.
Скачиваем скрипт для добавления репозитория:
wget http://repo.postgrespro.ru/std-15/keys/pgpro-repo-add.sh
Запускаем скрипт:
sh pgpro-repo-add.sh
Обновим список пакетов:
sudo yum update
Далее воспользуемся расширенной установкой. Как сказано в документации: "Такие инсталляции необходимо настраивать вручную, но это даёт дополнительную гибкость при использовании продукта."
yum install postgrespro-std-15-server
В результате получим установленные пакеты:
Следующим шагом необходимо подготовить отдельные директории для инициализации и работы СУБД PostgresPro:
mkdir -p /data/pg_data
chown -R postgres:postgres /data
mkdir -p /wal/pg_wal
chown -R postgres:postgres /wal
chown -R postgres:postgres /backup
mkdir -p /log/pg_log
chown -R postgres:postgres /log
Инициализация кластера СУБД PostgresPro в ручную через initdb с root правами:
/opt/pgpro/std-15/bin/pg-setup initdb --data-checksums --locale=en_US.utf8 --pgdata=/data/pg_data --waldir=/wal/pg_wal
Ответ: Initalizing database...
OK
Однако, не смотря на рекомендации лога инициализации, запускать СУБД не торопимся. Выполним настройку логов:
mcedit /data/postgresql.auto.conf
log_directory = '/log/pg_log'
log_line_prefix = '%m [%p] %u@%d/%a'
Обязательная команда обновления линков:
/opt/pgpro/std-15/bin/pg-wrapper links update
Лишь после этого стартуем СУБД:
Проверка наличия логов СУБД:
Проверка наличия wal-файлов:
Остался не задействован диск /tempdb. Задействовать его можно прописав команду:
ALTER SYSTEM SET stats_temp_directory = '/tempdb';
Однако, этот параметр актуален до 15 версии Postgresql.
Установка и первый старт СУБД Postres Pro 15 версии выполнен.
Однако, этих действий не достаточно для передачи СУБД в работу.
Почему для установки Postres Pro 15 выбрана RED OS 7.3? RED OS зарегистрирована в реестре российского ПО и имеет сертификаты, которые подтверждают ее безопасность. Импортозамещение!
Вот видео версия выполнения вышеуказанных команд: https://youtu.be/Me80dKeokd8