Вопросы:PostgreSQL в ОС Linux
Установка БД
При установке ОС 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 на ОС 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
Конфигурация БД
После установки ОС необходимо проверить настройки базы данных. По-умолчанию файлы конфигурации расположены: 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 должна быть создана.