PostgreSQL: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
(Import from wiki.etersoft.ru)
 
 
(не показано 9 промежуточных версий 5 участников)
Строка 1: Строка 1:
[[Category:PostgreSQL]]
{{MovedFromWikiEterSoftRu|PostgreSQL}}
== Postgre@Etersoft ==
== Postgre@Etersoft ==


Postgre@Etersoft - это специальные сборки свободной реляционной СУБД [http://www.postgresql.org/ PostgreSQL], в которые включены все изменения, необходимые для работы [http://wiki.etersoft.ru/SELTA SELTA@Etersoft] и серверов [http://wiki.etersoft.ru//ПрограммноеОбеспечение/БухУчёт/Установка1С81 1С:Предприятие 8.1] и [http://wiki.etersoft.ru//ПрограммноеОбеспечение/БухУчёт/Установка1С82 1С:Предприятие 8.2].
Postgre@Etersoft это специальные сборки свободной реляционной СУБД [http://www.postgresql.org/ PostgreSQL], в которые включены все изменения, необходимые для работы [[SELTA|SELTA@Etersoft]] и серверов [[ПрограммноеОбеспечение/БухУчёт/Установка1С81|1С:Предприятие 8.1]] и [[ПрограммноеОбеспечение/БухУчёт/Установка1С82|1С:Предприятие 8.2]].
 
Об изменениях по отношению к оригинальной версии PostgreSQL смотрите в разделе [http://wiki.etersoft.ru/PostgreSQL/Patch Изменения, внесённые в PostgreSQL].
 


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


'''Вы можете приобрести поддержку Postgre@Etersoft на [http://sales.etersoft.ru/price сайте продаж].'''
'''Вы можете приобрести поддержку Postgre@Etersoft на [http://sales.etersoft.ru/price сайте продаж].'''


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


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




 
Приоритетными при тестировании и сборке новых версий являются платформы ALT Linux Server, Ubuntu Server, CentOS. Мы рекомендуем ставить PostgreSQL на них.
Приоритетными при тестировании и сборке новых версий являются платформы ALT Linux 5.0 Server и Ubuntu Server. Мы рекомендуем ставить [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] на них.


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




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


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


* Установка происходит под root  
* Установка происходит под root  


<pre>#su -
$ su -
 
Password:
Password:</pre>


* Готовим место под пакеты
* Готовим место под пакеты


<pre># cd ~
# cd ~
# mkdir pg
# cd pg


# md pg
* Скачиваем пакеты, проверяем, что всё скачалось
 
# cd md</pre>
 
* Скачиваем пакеты, проверяем, что все скачалось


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


[ftp://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/ ftp://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/]
* ftp://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/
* http://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/


[http://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/ http://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/]
<pre>
 
# wget ftp://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/ALTLinux/5.0/*.rpm
<pre>#wget ftp://updates.etersoft.ru/pub/Etersoft/Postgre@Etersoft/stable/ALTLinux/5.0/*.rpm


.....
.....


#ls  
# ls  
 
postgresql-8.3eter-8.3.8-alt1.M50.2.1.i586.rpm
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-contrib-8.3.8-alt1.M50.2.1.i586.rpm
postgresql-8.3eter-server-8.3.8-alt1.M50.2.1.i586.rpm</pre>
postgresql-8.3eter-server-8.3.8-alt1.M50.2.1.i586.rpm</pre>


* Устанавливаем пакеты
=== Устанавливаем пакеты ===


Для работы требуется установить следующие пакеты [http://wiki.etersoft.ru/PostgreSQL PostgreSQL]:
Для работы требуется установить следующие пакеты PostgreSQL:


postgresql-8.3eter
* postgresql-8.3eter
 
* postgresql-8.3eter-contrib
postgresql-8.3eter-contrib
* postgresql-8.3-eter-server
 
postgresql-8.3-eter-server
 
<pre>#rpm -ihv *.rpm


<pre># rpm -ihv *.rpm
Preparing... ##################################################
Preparing... ##################################################
postgresql-8.3eter ##################################################
postgresql-8.3eter ##################################################
postgresql-8.3eter-contrib ##################################################
postgresql-8.3eter-contrib ##################################################
postgresql-8.3eter-server ##################################################
postgresql-8.3eter-server ##################################################
Running /usr/lib/rpm/posttrans-filetriggers</pre>
Running /usr/lib/rpm/posttrans-filetriggers</pre>


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


<pre># rm *.rpm
<pre># 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-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-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</pre>
rm: remove regular file `postgresql-8.3eter-server-8.3.8-alt1.M50.2.1.i586.rpm'? y</pre>


* Запускаем, при первом запуске создается кластер
=== Запускаем ===
 
<pre>#/etc/init.d/postgresql start
 
Initializing database: [ DONE ]
 
 
 
Starting postgresql service: [ DONE ]</pre>


если этого не произошла смотрите ошибки в логе запуска /var/lib/pgsql/pgstartup.log.
Запускаем, при первом запуске инициализируемый postgres -- создается окружение баз данных


# /etc/init.d/postgresql start
Initializing database: [ DONE ]
Starting postgresql service: [ DONE ]


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


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


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




* Возможные ошибки
=== Возможные ошибки ===


* Несоответствие SHMMAX и SHMALL
==== Несоответствие SHMMAX и SHMALL ====


<pre>#/etc/init.d/postgresql start
# /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


The current value of SHMMAX is too low for postgresql to run.
Значение SHMMAX (максимальный размер сегмента разделяемой памяти в байтах) слишком мало для запуска PostgreSQL.


Please edit /etc/sysctl.conf and set this value to at least 134217728:
Решение: Установите значение shmmax на указанное (или больше, если требуется согласно /var/lib/pgsql/pgstartup.log), внеся строку
kernel.shmmax=134217728
в /etc/sysctl.conf


kernel.shmmax = 134217728</pre>
Возможно придётся добавить ещё
kernel.shmall=134217728


Значение SHMMAX (максимальный размер сегмента разделяемой памяти в байтах) слишком мало для запуска [http://wiki.etersoft.ru/PostgreSQL PostgreSQL].
После чего для вступления изменений в силу выполнить
sysctl -p /etc/sysctl.conf.


Решение: Уcтановите значение shmmax на указанное [http://wiki.etersoft.ru/PostgreSQL PostgreSQL].
==== Занятый порт ====


<pre># sysctl -w kernel.shmmax=134217728</pre>
Одна из проблем, из-за которой может не запускаться PostgreSQL, может быть вызвана невозможностью использования выбранного порта.


Возможно придется сделать еще
PostgreSQL не смог запуститься:
 
<pre># sysctl -w kernel.shmall=134217728</pre>
 
Тоже самое сделать в /etc/sysctl.conf.
 
* Занятый порт
 
Одна из проблем, из-за которой вы не можете запустить [http://wiki.etersoft.ru/PostgreSQL PostgreSQL], может быть вызвана невозможностью использования выбранного порта.
 
[http://wiki.etersoft.ru/PostgreSQL PostgreSQL] не смог запуститься:


<pre>#/etc/init.d/postgresql start
<pre>#/etc/init.d/postgresql start
Starting postgresql service: [ FAILED ]</pre>
Starting postgresql service: [ FAILED ]</pre>


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


<pre>#cat /var/lib/pgsql/pgstartup.log
<pre>
 
# cat /var/lib/pgsql/pgstartup.log
ПОДСКАЗКА: Is another postmaster already running on port 80? If not, wait a few seconds and  
ПОДСКАЗКА: Is another postmaster already running on port 80? If not, wait a few seconds and retry.
 
retry.
 
LOG: не получилось создать сокет IPv6: Семейство адресов не поддерживается протоколом
LOG: не получилось создать сокет IPv6: Семейство адресов не поддерживается протоколом
WARNING: could not create listen socket for "*"
WARNING: could not create listen socket for "*"
FATAL: could not create any TCP/IP sockets
</pre>


FATAL: could not create any TCP/IP sockets</pre>
Это означает, что скорее всего порт, используемый PostgreSQL занят. По умолчанию это 5432.
 
Это означает, что скорее всего порт, используемый [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] занят. По умолчанию это 5432


Проверяем это, смотрим, кто использует порт
Проверяем это, смотрим, кто использует порт
 
# netstat -plan | grep 5432
<pre>#netstat -plan | grep 5432</pre>
 




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


# Решить проблему с программой, которая использует порт. Изменить ее порт.  
# Решить проблему с программой, которая использует порт. Изменить её порт.
 
# Изменить порт PostgreSQL.
# Изменить порт Postgres.
 
Для этого нужно изменить номер порта в файле /etc/init.d/postgresql
 
<pre>#cat /etc/init.d/postgresql | grep PGPORT=
 
PGPORT=5432</pre>
 
Измените это значение, на любой другой свободный номер порта.  


Для этого нужно указать номер порта в файле /etc/sysconfig/postgresql, добавив строку
PGPORT=55432
или любой другой удобный номер порта




Строка 201: Строка 149:
* [http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup]
* [http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup]


* [http://newblog.kz/posts/view/88 http://newblog.kz/posts/view/88]


=== Настройка PostgreSQL ===




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


=== Настройка [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] ===
Инициализация базы производится автоматически при первом запуске PostgreSQL, файлы баз данных будут храниться в каталоге /var/lib/pgsql/data, владелец каталога и процессов PostgreSQL устанавливается пользователь postgres, который создается автоматически, при установке пакетов.
 
 
 
В наших сборках [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] уже заложены необходимые минимальные настройки для работы СУБД с SELTA@Etersoft.
 
Инициализация базы производится автоматически при первом запуске [http://wiki.etersoft.ru/PostgreSQL PostgreSQL], файлы баз данных будут храниться в каталоге /var/lib/pgsql/data, владелец каталога и процессов [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] устанавливается пользователь postgres, который создается автоматически, при установке пакетов.
 




Строка 227: Строка 171:




* Сохраним изменения и перезапустим [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] , для вступлений изменений настроек, командой
* Сохраним изменения и перезапустим PostgreSQL, для вступлений изменений настроек, командой
 
 
 
<pre># /etc/init.d/postgresql restart
 
Stopping postgresql service: [ DONE ]
 
 


Starting postgresql service: [ DONE ]</pre>
# /etc/init.d/postgresql restart
Stopping postgresql service: [ DONE ]
Starting postgresql service: [ DONE ]




 
* Зададим пароль для работы с PostgreSQL.
* Зададим пароль для работы с [http://wiki.etersoft.ru/PostgreSQL PostgreSQL].


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


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


Проверяем:
Проверяем:


<pre>#psql -U postgres -W  
$ psql -U postgres -W  
 
Password for user postgres:  
Password for user postgres:  
Welcome to psql 8.3.8-eter1, the PostgreSQL interactive terminal.
 
Welcome to psql 8.3.8-eter1, the PostgreSQL interactive terminal.</pre>
 
 
 
* Если вы хотите запретить локальный доверенный доступ (без пароля), поменяйте обратно натройки. Строчку "local    all    all    trust" следует заменить обратно на "local    all    all    ident sameuser" и перезапустить сервис постгри, чтобы отключить возможность подключения локальным пользователем без пароля.






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




=== Консоль SQL запросов  [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] ===
=== Консоль SQL запросов  [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] ===


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


<pre>psql -U postgres</pre>
$ psql -U postgres


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




 
$ psql -U postgres
<pre>psql -U postgres
 
  # select upper('q');
  # select upper('q');
 
  # \quit
  # \quit</pre>




Строка 283: Строка 212:
=== Проверка работоспособности ===
=== Проверка работоспособности ===


* Проверям статус сервера:  
* Проверяем статус сервера:  


<pre>#/etc/init.d/postgresql status
<pre>#/etc/init.d/postgresql status
pg_ctl: выполняется сервер (PID: 31805)
pg_ctl: выполняется сервер (PID: 31805)
/usr/bin/postgres "-p" "5432" "-D" "/var/lib/pgsql/data"</pre>
/usr/bin/postgres "-p" "5432" "-D" "/var/lib/pgsql/data"</pre>


Строка 298: Строка 225:


<pre># netstat -plan | grep 5432
<pre># netstat -plan | grep 5432
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                  LISTEN      31805/postmaster
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</pre>
unix  2      [ ACC ]    STREAM    LISTENING    311449 31805/postmaster    /tmp/.s.PGSQL.5432</pre>


Строка 309: Строка 234:
* Смотрим установленную версию  
* Смотрим установленную версию  


<pre># psql -U postgres -c "SELECT version()"
<pre>
# psql -U postgres -c "SELECT version()"


                                                           version  
                                                           version  
Строка 323: Строка 249:
(1 row)</pre>
(1 row)</pre>


<!--
* Запустите SELTA и создайте БД. [http://wiki.etersoft.ru/SELTA/Config Подробнее тут]. Если БД создалась без ошибок, значит [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] установлен правильно.  
* Запустите SELTA и создайте БД. [http://wiki.etersoft.ru/SELTA/Config Подробнее тут]. Если БД создалась без ошибок, значит [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] установлен правильно.  
-->
После проверки работоспособности желательно провести оптимизацию настроек PostgreSQL в соответствии с возможностями вашего сервера: [[PostgreSQL/Optimum|Оптимизация настроек PostgreSQL]].


После проверки работоспособности желательно провести оптимизацию настроек [http://wiki.etersoft.ru/PostgreSQL PostgreSQL] в соответствии с возможностями вашего сервера: [http://wiki.etersoft.ru/PostgreSQL/Optimum Оптимизация настроек PostgreSQL].
=== Создание дампа и загрузка дампа ===


Дамп должен делаться так:
# pg_dump -F p $NAMEDATABASE > $FILEBACKUP -U $USERDATABASE


Восстанавливать из него нужно так:
# psql -o $FILELOG -d $NAMEDATABASE -f $FILEBACKUP -U $USERDATABASE


=== Ссылки ===
=== Ссылки ===


* [http://wiki.postgresqlrussia.org/index.php/Проекты-спутники_PostgreSQL Проекты-спутники PostgreSQL]
* [http://wiki.postgresqlrussia.org/index.php/Проекты-спутники_PostgreSQL Проекты-спутники PostgreSQL]
* [http://wiki.postgresqlrussia.org/ Российское сообщество пользователей PostgreSQL]
* [http://wiki.postgresqlrussia.org/ Российское сообщество пользователей PostgreSQL]
* [http://postgresql.leopard.in.ua/ Книга Работа с Postgresql: настройка, масштабирование]
* [http://postgresql.leopard.in.ua/ Книга Работа с Postgresql: настройка, масштабирование]
* [http://forum.postgresqlrussia.org Русскоязычный форум по PostgreSQL]
* [http://forum.postgresqlrussia.org Русскоязычный форум по PostgreSQL]
 
* [http://arahorn01.blogspot.com/2008/09/7-8.html Установка Slackware 12.1 в качестве сервера под 7 и 8 1С]
* [http://arahorn01.blogspot.com/2008/09/7-8.html Установка Slackware12.1 в качестве сервера под 7 и 8 1С]
 
* [http://www.freesource.info/wiki/ALTLinux/Dokumentacija/1C Документация по настройке PostgreSQL в ALT Linux]
* [http://www.freesource.info/wiki/ALTLinux/Dokumentacija/1C Документация по настройке PostgreSQL в ALT Linux]
 
* [[BuildPGSQLWindows|Инструкция по сборке PostgreSQL под Windows]]
* [http://wiki.etersoft.ru/BuildPGSQLWindows Инструкция по сборке PostgreSQL под Windows]
* [http://oit-company.ru/publ/opyt_obsluzhivanija_bazy_1s_v_postgresql/1-1-0-174 Опыт обслуживания PostgreSQL + 1С]
* [http://www.alsigned.ru/?p=1756 Установка 1с 8.2 и PostgreSQL 9.0.3 на CentOS 6]
* [https://postgrespro.ru/docs/postgrespro/ Postgres Professional]
[[Category:PostgreSQL]]

Текущая версия на 17:23, 30 марта 2017

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
  • Скачиваем пакеты, проверяем, что всё скачалось

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

# 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


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

  1. Решить проблему с программой, которая использует порт. Изменить её порт.
  2. Изменить порт 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.

Создание дампа и загрузка дампа

Дамп должен делаться так:

  1. pg_dump -F p $NAMEDATABASE > $FILEBACKUP -U $USERDATABASE

Восстанавливать из него нужно так:

  1. psql -o $FILELOG -d $NAMEDATABASE -f $FILEBACKUP -U $USERDATABASE

Ссылки