PostgreSQL

Материал из Etersoft wiki
Версия от 21:51, 13 мая 2012; СтаниславКоробейников (обсуждение | вклад) (Import from wiki.etersoft.ru)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигацииПерейти к поиску
Wackowiki-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была автоматически перемещена с old.wiki.etersoft.ru.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Postgre@Etersoft

Postgre@Etersoft - это специальные сборки свободной реляционной СУБД PostgreSQL, в которые включены все изменения, необходимые для работы SELTA@Etersoft и серверов 1С:Предприятие 8.1 и 1С:Предприятие 8.2.

Об изменениях по отношению к оригинальной версии PostgreSQL смотрите в разделе Изменения, внесённые в PostgreSQL.


Вы можете приобрести поддержку Postgre@Etersoft на сайте продаж.


Поддерживаемые платформы

Платформы, для которых собран Postgre@Etersoft, можно увидеть на странице продукта при заказе сборки SELTA@Etersoft или Postgre@Etersoft. Обратите внимание, что в зависимости от выбора платформы, Вам будет предоставлена полная, либо базовая поддержка на вашей системе.


Приоритетными при тестировании и сборке новых версий являются платформы ALT Linux 5.0 Server и Ubuntu Server. Мы рекомендуем ставить PostgreSQL на них.

Пакеты доступны как в 32-битных, так и в 64-битных версиях.


Установка СУБД

Инструкция приводится на примере ALT Linux 5.0. Для других систем могут быть свои особенности.


  • Установка происходит под root
#su -

Password:
  • Готовим место под пакеты
# cd ~

# md pg

# cd md
  • Скачиваем пакеты, проверяем, что все скачалось

Стабильные пакеты для различных систем можно получить здесь:

ftp://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/

http://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/

#wget ftp://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/ALTLinux/5.0/*.rpm

.....

#ls 

postgresql-8.3eter-8.3.8-alt1.M50.2.1.i586.rpm

postgresql-8.3eter-contrib-8.3.8-alt1.M50.2.1.i586.rpm

postgresql-8.3eter-server-8.3.8-alt1.M50.2.1.i586.rpm
  • Устанавливаем пакеты

Для работы требуется установить следующие пакеты PostgreSQL:

postgresql-8.3eter

postgresql-8.3eter-contrib

postgresql-8.3-eter-server

#rpm -ihv *.rpm

Preparing... ##################################################

postgresql-8.3eter ##################################################

postgresql-8.3eter-contrib ##################################################

postgresql-8.3eter-server ##################################################

Running /usr/lib/rpm/posttrans-filetriggers

Удаляем rpm, больше они не понадобяся

# rm *.rpm

rm: remove regular file `postgresql-8.3eter-8.3.8-alt1.M50.2.1.i586.rpm'? y

rm: remove regular file `postgresql-8.3eter-contrib-8.3.8-alt1.M50.2.1.i586.rpm'? y

rm: remove regular file `postgresql-8.3eter-server-8.3.8-alt1.M50.2.1.i586.rpm'? y
  • Запускаем, при первом запуске создается кластер
#/etc/init.d/postgresql start

Initializing database: [ DONE ]



Starting postgresql service: [ DONE ]

если этого не произошла смотрите ошибки в логе запуска /var/lib/pgsql/pgstartup.log.


В каталоге log/ содержатся логи сборки пакетов. Пакеты из каталогов extra/ потребуются только в особых случаях.


  • Возможные ошибки
  • Несоответствие SHMMAX и SHMALL
#/etc/init.d/postgresql start

The current value of SHMMAX is too low for postgresql to run.

Please edit /etc/sysctl.conf and set this value to at least 134217728:

kernel.shmmax = 134217728

Значение SHMMAX (максимальный размер сегмента разделяемой памяти в байтах) слишком мало для запуска PostgreSQL.

Решение: Уcтановите значение shmmax на указанное PostgreSQL.

# sysctl -w kernel.shmmax=134217728

Возможно придется сделать еще

# sysctl -w kernel.shmall=134217728

Тоже самое сделать в /etc/sysctl.conf.

  • Занятый порт

Одна из проблем, из-за которой вы не можете запустить PostgreSQL, может быть вызвана невозможностью использования выбранного порта.

PostgreSQL не смог запуститься:

#/etc/init.d/postgresql start

Starting postgresql service: [ FAILED ]

И в /var/lib/pgsql/pgstartup.log

#cat /var/lib/pgsql/pgstartup.log

ПОДСКАЗКА: Is another postmaster already running on port 80? If not, wait a few seconds and 

retry.

LOG: не получилось создать сокет IPv6: Семейство адресов не поддерживается протоколом

WARNING: could not create listen socket for "*"

FATAL: could not create any TCP/IP sockets

Это означает, что скорее всего порт, используемый PostgreSQL занят. По умолчанию это 5432

Проверяем это, смотрим, кто использует порт

#netstat -plan | grep 5432


Пути решения:

  1. Решить проблему с программой, которая использует порт. Изменить ее порт.
  1. Изменить порт Postgres.

Для этого нужно изменить номер порта в файле /etc/init.d/postgresql

#cat /etc/init.d/postgresql | grep PGPORT=

PGPORT=5432

Измените это значение, на любой другой свободный номер порта.


Подробности по установке смотрите здесь:



Настройка PostgreSQL

В наших сборках PostgreSQL уже заложены необходимые минимальные настройки для работы СУБД с SELTA@Etersoft.

Инициализация базы производится автоматически при первом запуске PostgreSQL, файлы баз данных будут храниться в каталоге /var/lib/pgsql/data, владелец каталога и процессов PostgreSQL устанавливается пользователь postgres, который создается автоматически, при установке пакетов.


  • Для того, чтобы иметь возможность подключиться к нему, мы должны задать пароль главному пользователю СУБД - владельцу всех баз данных - postgres, это выполняется это следующим образом:

Сначала в файле конфигурации /var/lib/pgsql/data/pg_hba.conf изменяем строчку:

local           all          all                ident sameuser

на строчку:

local           all          all                trust


  • Сохраним изменения и перезапустим PostgreSQL , для вступлений изменений настроек, командой


# /etc/init.d/postgresql restart

Stopping postgresql service: [ DONE ]



Starting postgresql service: [ DONE ]


  • Зададим пароль для работы с PostgreSQL.

Для этого требуется выполнить запрос.

# psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'новый пароль'"

Проверяем:

#psql -U postgres -W 

Password for user postgres: 

Welcome to psql 8.3.8-eter1, the PostgreSQL interactive terminal.


  • Если вы хотите запретить локальный доверенный доступ (без пароля), поменяйте обратно натройки. Строчку "local all all trust" следует заменить обратно на "local all all ident sameuser" и перезапустить сервис постгри, чтобы отключить возможность подключения локальным пользователем без пароля.



Консоль SQL запросов PostgreSQL

В состав PostgreSQL входит утилита командной строки psql. Для ее запуска на сервере, на котором работает PostgreSQL нужно выполнить следующую команду:

psql -U postgres

C помощью утилиты psql можно выполнять SQL запросы и просматривать результаты их выполнения, например:


psql -U postgres

 # select upper('q');

 # \quit


Проверка работоспособности

  • Проверям статус сервера:
#/etc/init.d/postgresql status

pg_ctl: выполняется сервер (PID: 31805)

/usr/bin/postgres "-p" "5432" "-D" "/var/lib/pgsql/data"

Сервер запущен. Если, это не так, запустите сервер, так, как было описано выше.


  • Проверяем, использование порта
# netstat -plan | grep 5432

tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN      31805/postmaster

unix  2      [ ACC ]     STREAM     LISTENING     311449 31805/postmaster    /tmp/.s.PGSQL.5432

Требующейся нам порт используется postmaster, как и должно быть.


  • Смотрим установленную версию
# psql -U postgres -c "SELECT version()"

                                                           version 

----------------------------------------------------------------------------------------------

--------------------------------

 PostgreSQL 8.3.8-eter1 on i586-alt-linux-gnu, compiled by GCC i586-alt-linux-gcc (GCC) 4.3.2 

20081105 (ALT Linux 4.3.2-alt9)

(1 row)
  • Запустите SELTA и создайте БД. Подробнее тут. Если БД создалась без ошибок, значит PostgreSQL установлен правильно.

После проверки работоспособности желательно провести оптимизацию настроек PostgreSQL в соответствии с возможностями вашего сервера: Оптимизация настроек PostgreSQL.


Ссылки