...

Установка PostgreSQL 10 на CentOS 8

Тема в разделе "ELMA365 On-Premises", создана пользователем bessolitsyn, 13 янв 2022.

Метки:
  1. bessolitsyn

    bessolitsyn New Member

    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'

    Initializedlogs 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 -"CREATE ROLE elma365 WITH login password 'SecretPassword';"
    
    

    4. Установка расширения.

    Устанавливаем расширение:

    Код:
    
    sudo -u postgres psql -d elma365 -"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

     
    Последнее редактирование: 14 янв 2022
  2. kamyshev

    kamyshev Member

    Оч круто, спасибо! Не хватает еще описания как инициализировать БД на отдельном маунте, как указать свой путь до папки, где будут хранится все файлы БД
     
  3. MikeG

    MikeG New Member

    PostgreSQL развёрнут под Windows. Хочу перенести базу на Linux.
    На винде БД создана с параметрами
    ENCODING = 'UTF8'
    LC_COLLATE = 'Russian_Russia.1251'
    LC_CTYPE = 'Russian_Russia.1251'

    В линуксе, естественно, такой локали нет. Для тестов в линуксе создал базу с параметрами по-умолчанию
    ENCODING = 'UTF8'
    LC_COLLATE = 'C.UTF-8'
    LC_CTYPE = 'C.UTF-8'

    Залил дамп через pg_dump/pg_restore. На первый взгляд с отображением и кодировками всё в порядке. По идее, COLLATE влияет только на порядок сортировки.
    Не вылезет ли при дальнейшей эксплуатации что-нибудь ещё? Может есть какая рекомендация при миграции базы данных ELMA на PoestgreSQL с Windows на Linux?
     
    Последнее редактирование: 21 янв 2022