PostgreSQL - является системой управления реляционными базами данных. Данная система имеет возможность обеспечивать реализацию языка структурированных запросов (SQL), широко применяется не только в крупных и популярных проектах, но и во многих небольших. Из особых продвинутых функций можно выделить, такие как надежные транзакции и многопоточность без блокировки чтения. Это что касается вводной теоретической части.
Сверка предварительных требований
Для выполнения этого обучающего руководства вам потребуется сервер на базе CentOS 8. Этот сервер должен иметь пользователя non-root user с административными правами.
1. Установка PostgreSQL
PostgreSQL доступна в репозитории ПО CentOS 8. Имеется несколько версий доступных к установке, но нас конкретно интересует только 10-я.
Со списком доступных версий можно ознакомиться с помощью команды :
Код:
dnf module list postgresql
Поток, который предоставляет Postgres версии 10, является потоком по умолчанию, о чем сигнализирует [d] в его конце.
Далее необходимо запустить установку:
Код:
sudo dnf install postgresql-server
Ранее в списке по умолчанию стояли 2 версии 9.6 и 10, поэтому в дальнейшем если идентификатор [d] стоит не только у версии 10, необходимо непосредственно активировать необходимый поток:
Код:
sudo dnf module enable postgresql:10
При появлении запроса нажмите y, а затем ENTER, чтобы подтвердить, что вы хотите активировать поток.
2. Создание кластера баз данных PostgreSQL.
Для создания кластера баз данных запустите скрипт с помощью sudo и опции --initdb:
Код:
sudo postgresql-setup --initdb
Результат будет выглядеть так:
Код:
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
Далее запускаем службу PostgreSQL с помощью systemctl:
Код:
sudo systemctl start postgresql
Затем воспользуйтесь systemctl еще раз, чтобы активировать запуск службы при загрузке сервера:
Код:
sudo systemctl enable postgresql
В результате должно быть сообщение:
Код:
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
PostgreSQL запущен и работает, мы перейдем к использованию ролей.
3. Создание ролей.
Создаем роль:
Код:
sudo -u postgres psql -c "CREATE ROLE elma365 WITH login password 'SecretPassword';"
4. Установка расширения.
Устанавливаем расширение:
Код:
sudo -u postgres psql -d elma365 -c "CREATE EXTENSION \"uuid-ossp\"; CREATE EXTENSION pg_trgm;"
(Здесь необходимо понимать, что данное действие сработает, если расширение и postgreSQL устанавливается впервые)
5. Добавляем ip, в которых будет работать БД.
Например, для внешнего сервера с elma365 был добавлен ip сервера PostgreSQL.
В centOS директории с другими путями (не так, как описано в документации Академии), поэтому нужно найти путь:
Код:
find / -name postgresql.conf
Открываем nano и редактируем:
Код:
sudo nano /etc/postgresql/10/main/postgresql.conf
Раскомментировать строчку (убрать #), и установить нужные значения.
localhost - нужен для самого сервера,
ip сервера kubernetes, ip сервера (PostgreSQL),
listen_addresses = 'localhost, 10.0.1.1, 10.168.224.65'
Добавить в конец файла конфигурации авторизации /etc/postgresql/10/main/pg_hba.conf адрес сети, в которой работают ноды elma365:
Код:
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
Пример:
Код:
host all all 10.168.0.0/16 md5
host all all 192.168.0.0/16 md5
host all all 10.0.0.0/8 md5
Далее необходимо перезагрузить PostgreSQL:
Код:
/bin/systemctl restart postgresql.service
И проверить статус:
Код:
/bin/systemctl status postgresql.service
Последним пунктом является подключение PostgreSQL к elma365
Пример:
Код:
postgresql://elma:SecretPassword@10.168.224.62:5432/elma?sslmode=disable
postgresql://Пользователь:Пароль@IP адрес pg:Порт/Имя БД?sslmode=disable