PostgreSQL
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 Server, Ubuntu Server, CentOS. Мы рекомендуем ставить PostgreSQL на них.
Пакеты доступны как в 32-битных, так и в 64-битных версиях.
Установка СУБД
Инструкция приводится на примере ALT Linux 5.0. Для других систем могут быть свои особенности.
- Установка происходит под root
$ su - Password:
- Готовим место под пакеты
# cd ~ # mkdir pg # cd pg
- Скачиваем пакеты, проверяем, что всё скачалось
Стабильные пакеты для различных систем можно получить здесь:
- 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
Запускаем
Запускаем, при первом запуске инициализируемый postgres -- создается окружение баз данных
# /etc/init.d/postgresql start Initializing database: [ DONE ] Starting postgresql service: [ DONE ]
если этого не произошло, смотрите ошибки в логе запуска /var/lib/pgsql/pgstartup.log.
Возможные ошибки
Несоответствие 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.
Решение: Установите значение shmmax на указанное (или больше, если требуется согласно /var/lib/pgsql/pgstartup.log), внеся строку
kernel.shmmax=134217728
в /etc/sysctl.conf
Возможно придётся добавить ещё
kernel.shmall=134217728
После чего для вступления изменений в силу выполнить
sysctl -p /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
Пути решения:
- Решить проблему с программой, которая использует порт. Изменить её порт.
- Изменить порт PostgreSQL.
Для этого нужно указать номер порта в файле /etc/sysconfig/postgresql, добавив строку
PGPORT=55432
или любой другой удобный номер порта
Подробности по установке смотрите здесь:
Настройка 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)
После проверки работоспособности желательно провести оптимизацию настроек PostgreSQL в соответствии с возможностями вашего сервера: Оптимизация настроек PostgreSQL.
Создание дампа и загрузка дампа
Дамп должен делаться так:
- pg_dump -F p $NAMEDATABASE > $FILEBACKUP -U $USERDATABASE
Восстанавливать из него нужно так:
- psql -o $FILELOG -d $NAMEDATABASE -f $FILEBACKUP -U $USERDATABASE
Ссылки
- Проекты-спутники PostgreSQL
- Российское сообщество пользователей PostgreSQL
- Книга Работа с Postgresql: настройка, масштабирование
- Русскоязычный форум по PostgreSQL
- Установка Slackware 12.1 в качестве сервера под 7 и 8 1С
- Документация по настройке PostgreSQL в ALT Linux
- Инструкция по сборке PostgreSQL под Windows
- Опыт обслуживания PostgreSQL + 1С
- Установка 1с 8.2 и PostgreSQL 9.0.3 на CentOS 6
- Postgres Professional