Filskiy (обсуждение | вклад) Нет описания правки |
Filskiy (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
{{Вопросы:Установка PostgreSQL в Linux}} | {{Вопросы:Установка PostgreSQL в Linux}} | ||
=Не запускается PostqreSQL= | =Не запускается PostqreSQL= | ||
{{Запуск PostgreSQL в Linux}} | |||
=Конфигурация БД= | =Конфигурация БД= | ||
После установки ОС необходимо проверить настройки базы данных. | После установки ОС необходимо проверить настройки базы данных. |
Версия от 09:31, 5 августа 2022
Установка БД
При установке ОС Linux Astra SE необходимо указать, что на сервере будет находиться СУБД. Данный пункт указывается при выборе программного обеспечения.
![]()
Установка сервера КРОС на ОС семейста Linux Установка сервера КРОС на ОС Windows
Если ОС Astra SE уже установлена и настроен локальный репозиторий, тогда для установки PostgreSQL можно воспользоваться менеджером пакетов Synaptic или в терминале набрать команду sudo apt install postgresql
Так как Astra Lunux SE, является ОС специального назначения, то доступ к репозиториям скорее всего необходимо будет прописывать отдельно. При наличии образа установочного диска, его необходимо смонтировать и настроить список репозиториев:
sudo mount -o loop /<путь к образу системы>/AstraSmolenskAmd64.iso /media/cdrom0 sudo apt-cdrom add sudo apt update
или
sudo mkdir /media/install sudo mount /<путь к образу системы>/AstraSmolenskAmd64.iso /media/install Внести изменения в список доступных репозиториев, изменим запись в файле source.list: sudo nano /etc/apt/source.list Вместо имеющихся строк записать: deb file:///media/install smolensk main contrib non-free Далее нажать <F2>, <Y> и <Enter>. sudo apt update sudo apt install postgresql
Образ может находится в каталоге /mnt/hdd/Recovery
В начало статьи
Не запускается PostqreSQL
Запуск PostgreSQL в ручную
При установке PostgreSQL на ОС Linux: Debian, Ubuntu, Эльбрус, CentOS и ряде других, при запуске сервиса PostgreSQL ОС может сообщить об отсутствии служебной БД(кластера), по указанному пути. Это означает, что кластер БД не инициализинован.
Для инициализации кластера необходимо выполнить следующие команды:
1. Проверить остановлен ли сервис PostgreSQL:
sudo /etc/init.d/postgresql status или
sudo service postgresql status или
sudo systemctl postgresql status
Вы должны получить ответ системы, о том, что сервис не активен.
2. Инициализация кластера PostgreSQL должна производиться от имени пользователя, который в последствии будет считаться администратором БД. По умолчанию это пользователь - postgres
Поэтому выполняем команду от имени этого пользователя: sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/main или
sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/data
Путь к БД, требуемый по умолчанию можно увидеть в сообщении об ошибке при старте сервиса PostgresSQL. Если есть необходимость в нестандартном месте расположения БД, то него необходимо указать при инициализации кластера.
3. Если используется нестандартное расположение БД, тогда после создания кластера и до запуска сервиса PosqtgreSQL необходимо внести изменения в файл postgresql.conf
data_directory = '<полный путь к БД из строки инициализации>'
hba_file = '<полный путь к файлам конфигурации>/pg_hba.conf'
ident_file = '<полный путь к файлам конфигурации>/pg_ident.conf'
external_pid_file = '/var/run/postgresql/pg-main.pid'
Файлы конфигурации могут располагаться либо в каталоге /etc/postgresql/<версия postgresql>/main, либо в каталоге, куда сгенерирована БД кластера, например, /var/lib/postgresql/<версия postgresql>/main, либо /var/lib/postgresql/<версия postgresql>/data, либо указанный путь.
4. После внесенных изменений необходимо запустить сервис:
sudo /etc/init.d/postgresql start или
sudo service postgresql start или
sudo systemctl postgresql start
Проверяем работу postgresql :
psql -U postgres -h localhost
Если будет запрос пароля, тогда необходимо ввести пароль от пользователя postgres(по умолчанию - postgres) в командной строке сервиса управления БД набрать: \l. При этом получим список баз данных. Для выхода нужно набрать: \q.
5. Для проверки автостарта сервиса postgresql необходимо перезагрузить компьютер.
Проверяем, узнав статус по командам, указанным п п.1. Если сервис не активен, тогда надо выполнить команду, позволяющую запускать postgresql при старте ОС В Debian и ОС, созданных на его основе: systemctl enable postgresql В CentOS и, созданных на основе RedHat: chkconfig postgresql on
Автоматизация проверки запуска PostgreSQL
Можно попробовать упростить проверку запуска PostgreSQL при запуске системы после сбоя по электропитанию, для этого необходимо, чтобы при загрузке ОС запускался скрипт проверяющий работу PostgreSQL перед стартом КРОС. Для этого необходимо выполнить следующие действия:
1. Запустить "Terminal Fly" 2. Войти в среду суперпользователя: sudo su 3. Скачать скрипт для проверки: wget -P /usr/bin/ https://srv2.jupiter8.ru/soft/postgresql/check_postgresql 4. Сделать файл исполняемым: chmod +x /usr/bin/check_postgresql 6. Скачать файл запуска процесса: wget -P /etc/systemd/system/ https://srv2.jupiter8.ru/soft/postgresql/check_postgresql.service 7. Перезагрузить список сервисов: systemctl daemon-reload 8. Разрешить запуск сервиса при старте системы: systemctl enable check_postgresql
Так же, для создания отдельного сервиса smpo-server и сервиса проверки запуска PostgrSQL, можно воспользоваться скриптом. Его следует запустить в "Terminal Fly".
При исполнении команд работа сервера КРОС будет временно приостановлена.
!!!ВНИМАНИЕ!!!
В случае, когда для проверки запуска PostgreSQL, был использован наш скрипт, в дальнейшем команда start/stop/restart для smpo-server будет иметь вид:
service smpo-server start/stop/restart
Конфигурация БД
После установки ОС необходимо проверить настройки базы данных. По-умолчанию файлы конфигурации расположены: Linux - /etc/postgresql/9.6/main/ Windows - C:\Program Files\PostgreSQL\9.6\data\ Вначале необходимо проверить файл с конфигурацией разрешенных подключений. Для этого надо открыть файл pg_hba.conf и проверить его содержимое. В данном файле должны быть следующие строки:
local all postgres peer local all all peer host all all 127.0.0.1/32 md5
"9.6" в пути каталога указывает на версию Postgresql. Вызвать файл на редактирование можно командой: sudo nano /etc/postgresql/9.6/main/pg_hba.conf Далее необходимо проверить настройки файла postgresql.conf. Его можно открыть командой: sudo nano /etc/postgresql/9.6/main/postgresql.conf. Для оптимизации соединений к базе данных можно отредактировать следующие параметры: listen_adresses = 'localhost' max_connections = 300 shared_buffers = 2048MB max_prepared_transactions = 200 После внесённых изменений, Необходимо перезагрузить Postgresql - sudo /etc/init.d/postrgesql restart
Перенос БД на ОС отличные от Linux Astra SE
В ПО КРОС уже встроен механизм резервного копирования. Однако иногда возникает необходимость переноса базы данных на ОС отличную от Linux Astra SE. В связи с тем, что данная ОС выставляет мандатные метки, восстановление базы данных на компьютерах с ОС их не поддерживающих, затруднительно. В этом случае необходимо воспользоваться утилитами postgresql из терминала. 1. Необходимо выйти из АРМ и остановить smpo-server : sudo /etc/init.d/smpo-server stop 2. Проверяем: завершились ли процессы: ps -aux | grep java 3. Если процессы не завершились, делаем принудительное завершение: sudo kill -9 <номер процесса> 4. Далее делаем копию базы с отключением мандатных меток: sudo pg_dump -h localhost -U postgres -Fp --disable-macs --no-security-labels jupiter > /home/elesta/jupiter.sql. Вводим пароль пользователя postgres, если система запросит. 5. Копируем файл jupiter.sql из каталога /home/elesta на внешний носитель и переносим на новый компьютер 6. Восстановление базы возможно из утилиты pgAdmin или в командной строке: sudo psql -h localhost -U postgres -d jupiter </home/elesta/jupiter.sql. При восстановлении из командной строки БД jupiter должна быть создана.