Вопросы:PostgreSQL в ОС Linux: различия между версиями

Материал из Юпитер-8
Нет описания правки
Нет описания правки
 
(не показано 14 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
<div style="float: left; text-align: left; padding-right: 10px;">[[000010000|Предыдущая страница]]</div>
__TOC__
<div style="float: right; text-align: right; padding-left: 10px;">[[0000100101|Следующая страница]]</div>
 
<div style="float: center; margin: 0 auto; width: 320px;">[[000010000|Вопросы по ОС Linux Astra SE, КРОС, АРМ]]</div>
=Установка БД=
<div style="float: center; margin: 0 auto; width: 100px;">[[000001000|КРОС]]</div>
{{Вопросы:Установка PostgreSQL в Linux}}
----
=Не запускается PostqreSQL=
<h3><u>Оглавление</u></h3>
При установке PostgreSQL на ОС ''Linux: Debian, Ubuntu, Эльбрус, CentOS'' и ряде других, при запуске сервиса PostgreSQL ''ОС'' может сообщить об отсутствии служебной ''БД''(кластера), по указанному пути. Это означает, что кластер ''БД'' не инициализинован.
----
Для инициализации кластера необходимо выполнить следующие команды:<br>
[[0000100101|1. Установка PostgreSQL в Linux]]
1. Проверить остановлен ли сервис PostgreSQL:<br>
[[0000100102|2. Не запускается PostgreSQL]]
'''''sudo /etc/init.d/postgresql status''''' или<br>
[[0000100103|3. Конфигурация БД]]
'''''sudo service postgresql status''''' или<br>
[[0000100104|4. Перенос БД на ОС отличные от Linux Astra SE]]
'''''sudo systemctl postgresql status'''''<br>
[[0000100105|5. Средство работы с PostgreSQL pgAdmin]]
  Вы должны получить ответ системы, о том, что сервис не активен.
[[0000100106|6. Автоматизация процесса резервирования БД]]
2. Инициализация кластера PostgreSQL должна производиться от имени пользователя, который в последствии будет считаться администратором ''БД''. По умолчанию это пользователь - '''''postgres'''''
[[0000100107|7. Техническое обслуживание БД PostgreSQL]]
  Поэтому выполняем команду от имени этого пользователя:
  '''''sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/main''''' или<br>
  '''''sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/data'''''<br>
  Путь к ''БД'', требуемый по умолчанию можно увидеть в сообщении об ошибке при старте сервиса PostgresSQL.
  Если есть необходимость в нестандартном месте расположения ''БД'', то него необходимо указать при инициализации кластера.
3. Если используется нестандартное расположение ''БД'', тогда '''после создания кластера и до запуска сервиса''' ''PosqtgreSQL'' необходимо внести изменения в файл postgresql.conf
<div style="border-left:8px solid #EEE; padding-left:8px; margin:16px; max-width:900px">
''  data_directory = '<полный путь к БД из строки инициализации>'''<br>
''  hba_file = '<полный путь к файлам конфигурации>/pg_hba.conf'''<br>
''  ident_file = '<полный путь к файлам конфигурации>/pg_ident.conf'''<br>
''  external_pid_file = '/var/run/postgresql/pg-main.pid'''<br>
</div>
  Файлы конфигурации могут располагаться либо в каталоге '''''/etc/postgresql/<версия postgresql>/main''''', либо
  в каталоге, куда сгенерирована ''БД'' кластера, например, '''''/var/lib/postgresql/<версия postgresql>/main''''', либо '''''/var/lib/postgresql/<версия postgresql>/data''''', либо указанный путь.
4. После внесенных изменений необходимо запустить сервис:<br>
'''''sudo /etc/init.d/postgresql start''''' или<br>
'''''sudo service postgresql start''''' или<br>
'''''sudo systemctl postgresql start'''''<br>
  Проверяем работу postgresql :  
'''''psql -U postgres -h localhost'''''
  Если будет запрос пароля, тогда необходимо ввести пароль от пользователя ''postgres''(по умолчанию - postgres)
  в командной строке сервиса управления БД набрать: \l. При этом получим список баз данных.
  Для выхода нужно набрать: \q.
5. Для проверки автостарта сервиса '''''postgresql''''' необходимо перезагрузить компьютер.
  Проверяем, узнав статус по командам, указанным п п.1.
  Если сервис не активен, тогда надо выполнить команду, позволяющую запускать ''postgresql'' при старте ''ОС''
  В Debian и ОС, созданных на его основе: '''''systemctl enable postgresql'''''
  В CentOS и, созданных на основе RedHat: '''''chkconfig postgresql on'''''
<br clear="both" />
[[#top|В начало статьи]]
=Конфигурация БД=
  После установки ОС необходимо проверить настройки базы данных.
  По-умолчанию файлы конфигурации расположены:
  Linux - /etc/postgresql/9.6/main/
  Windows - C:\Program Files\PostgreSQL\9.6\data\
  Вначале необходимо проверить файл с конфигурацией разрешенных подключений. Для этого надо открыть файл ''pg_hba.conf'' и проверить его содержимое.
  В данном файле должны быть следующие строки:
  <div style="border-left:8px solid #EEE; padding-left:8px; margin:16px; max-width:900px">
  ''local      all        postgres                peer''
  ''local      all        all                    peer''
  ''host        all        all      127.0.0.1/32  md5''
  </div>
  '''''"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'''''
<br clear="both" />
[[#top|В начало статьи]]
=Перенос БД на ОС отличные от 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'' должна быть создана'''.
<br clear="both" />
[[#top|В начало статьи]]

Текущая версия от 11:45, 8 сентября 2022