Postgre: внезапно изменился локальный сокет

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

Ответить
IMB
Сообщения: 2561
ОС: Debian

Postgre: внезапно изменился локальный сокет

Сообщение IMB »

Доброго дня!
Сегодня в ночь не отработал скрипт снятия бэкапа базы с сообщением:

Код: Выделить всё

psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Данные по процессу:

Код: Выделить всё

# netstat -anpe | grep postgre
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      102        15246170    16629/postgres
..............................................
unix  2      [ ACC ]     STREAM     LISTENING     15246172 16629/postgres      /tmp/.s.PGSQL.5432

Вчера всё работало, удалённый доступ к базе есть.
Сейчас с базой работают, но вечером я могу перезапустить демона, если по другому проблема не рашается.
Вопрос - с чего вдруг изменился локальный сокет и возможно ли решить без перезапуска?
Спасибо.
Спасибо сказали:
Аватара пользователя
Nikky
Сообщения: 339
ОС: Debian GNU/Linux

Re: Postgre: внезапно изменился локальный сокет

Сообщение Nikky »

IMB писал(а):
11.11.2010 10:06
Доброго дня!
Сегодня в ночь не отработал скрипт снятия бэкапа базы с сообщением:

Код: Выделить всё

psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Данные по процессу:

Код: Выделить всё

# netstat -anpe | grep postgre
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      102        15246170    16629/postgres
..............................................
unix  2      [ ACC ]     STREAM     LISTENING     15246172 16629/postgres      /tmp/.s.PGSQL.5432

Вчера всё работало, удалённый доступ к базе есть.
Сейчас с базой работают, но вечером я могу перезапустить демона, если по другому проблема не рашается.
Вопрос - с чего вдруг изменился локальный сокет и возможно ли решить без перезапуска?
Спасибо.

Количество клиентов в момент отработки скрипта не превышало установленный максимум?
Арфы нет - возьмите бубен...
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Postgre: внезапно изменился локальный сокет

Сообщение IMB »

Nikky писал(а):
11.11.2010 11:12
Количество клиентов в момент отработки скрипта не превышало установленный максимум?

Не думаю, скрипт запускается в 5 утра. В это время с 1С никто не работает.
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Postgre: внезапно изменился локальный сокет

Сообщение skeletor »

Неправильно указан путь к сокету. Сравните пути к сокетам:

Код: Выделить всё

connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

и

Код: Выделить всё

unix  2      [ ACC ]     STREAM     LISTENING     15246172 16629/postgres      /tmp/.s.PGSQL.5432
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Postgre: внезапно изменился локальный сокет

Сообщение IMB »

Ну так я это и сам вижу. Вопрос в том почему путь изменился.
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Postgre: внезапно изменился локальный сокет

Сообщение skeletor »

Может кто-то изменил скрипт снятия бэкапа?
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Postgre: внезапно изменился локальный сокет

Сообщение IMB »

skeletor писал(а):
11.11.2010 13:10
Может кто-то изменил скрипт снятия бэкапа?

Нет, Вы разве указываете сокет когда подключаетесь к базе? Мне ни разу не приходилось.
Скрипт

Код: Выделить всё

#!/bin/sh
DATE=`/bin/date --date '-1 day' +%Y%m%d`
BACKUPDIR=/backup
PGUSER=postgres
/usr/bin/vacuumdb --all --analyze --full --quiet --username $PGUSER
for i in trade zup montage; do
        /usr/bin/find $BACKUPDIR/$i -type f -ctime +45 -delete
        /usr/bin/pg_dump --insert --blobs --format=custom \
                --username=$PGUSER --file=$BACKUPDIR/$i/$DATE.tgz $i
done
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Postgre: внезапно изменился локальный сокет

Сообщение skeletor »

IMB писал(а):
11.11.2010 13:39
skeletor писал(а):
11.11.2010 13:10
Может кто-то изменил скрипт снятия бэкапа?

Нет, Вы разве указываете сокет когда подключаетесь к базе? Мне ни разу не приходилось.

А как программа должна знать, где искать сокет? Откуда ей знать, лежит он в /tmp или в /var/run? Да и при том, у него (у сокета) есть имя.
Допустим, я в настройках БД выставил, что сокет будет создаваться по адресу /home/posgres/.s.PGSQL.5432. Вы сможете подключиться к моей БД через сокет, не зная полного пути? Нет конечно.
В данном случае, эти приложения входят в один набор и используют параметры сервера postgres, поэтому вы нигде не указываете пути к сокету.

А теперь ближе к решению проблемы: посмотрите внимательно, может поправили пути к сокету в конфиге postgres'a. Может запущено несколько БД postgres? Попробуйте подключиться с консоли через psql, по идее не должно пустить, так как скрипт не отработал. Попробуйте вручную запустить скрипт
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Postgre: внезапно изменился локальный сокет

Сообщение IMB »

Количество запущенных Postgre - на мой взгляд один:

Код: Выделить всё

$ ps aux | grep postgres
postgres  9711  0.8  0.7 185296 127408 ?       S<s  07:51   3:31 postgres: postgres trade 192.168.10.240(4623) idle
postgres  9962  1.0  0.9 210236 153536 ?       S<s  09:09   3:35 postgres: postgres trade 192.168.10.240(1044) idle
postgres  9999  1.0  0.7 177200 116284 ?       S<s  09:21   3:24 postgres: postgres trade 192.168.10.240(1122) idle
postgres 10088  0.7  0.7 185376 123428 ?       S<s  09:32   2:24 postgres: postgres trade 192.168.10.240(1193) idle
postgres 10275  0.6  1.2 278660 198180 ?       S<s  09:54   1:57 postgres: postgres trade 192.168.10.240(1363) idle
postgres 10287  1.0  0.8 204000 147204 ?       S<s  09:58   3:08 postgres: postgres trade 192.168.10.240(1388) idle
postgres 10364  0.0  0.0 129176  9128 ?        S<s  10:15   0:00 postgres: postgres trade 192.168.10.240(1499) idle
postgres 10947  0.2  0.6 169860 103044 ?       S<s  13:16   0:12 postgres: postgres zup 192.168.10.240(2868) idle
postgres 11152  0.0  0.0 130092 10296 ?        S<s  14:19   0:00 postgres: postgres trade 192.168.10.240(3321) idle
postgres 16629  0.0  0.0 108220  8036 ?        S<   Oct13   0:59 /usr/bin/postgres -D /database/postgresql -p 5432 -c config_file=/etc/postgresql/postgresql.conf -c hba_file=/etc/postgresql/pg_hba.conf -c ident_file=/etc/postgresql/pg_ident.conf -c external_pid_file=/var/run/postgresql-1c.pid
postgres 16631  0.0  0.4 108708 69204 ?        S<s  Oct13   1:44 postgres: writer process
postgres 16632  0.0  0.0 108220  1292 ?        S<s  Oct13   0:26 postgres: wal writer process
postgres 16633  0.0  0.0 112556  5436 ?        S<s  Oct13   1:18 postgres: autovacuum launcher process
postgres 16634  0.7  0.0  34564  4520 ?        S<s  Oct13 316:10 postgres: stats collector process

Путь к сокету специально не задавался, изменения в конфиг вносились месяц назад:

Код: Выделить всё

$ ls -l /etc/postgresql/postgresql.conf
-rw------- 1 postgres postgres 16657 2010-10-13 19:42 /etc/postgresql/postgresql.conf

# grep socket /etc/postgresql/postgresql.conf
#unix_socket_directory = ''             # (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation

Запуск скрипта вручную выводит тужу ошибку:

Код: Выделить всё

$ scripts/pg-backup
vacuumdb: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
pg_dump: [archiver (db)] connection to database "trade" failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
pg_dump: [archiver (db)] connection to database "zup" failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
pg_dump: [archiver (db)] connection to database "montage" failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Postgre: внезапно изменился локальный сокет

Сообщение skeletor »

Ну тогда явно укажи в /etc/postgresql/postgresql.conf

Код: Выделить всё

unix_socket_directory =/var/run/postgresql
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Postgre: внезапно изменился локальный сокет

Сообщение IMB »

Можно и так, но изменение этого параметра требует перезапуска сервиса, а было желание решить это без перезапуска. Ну и интересно, почему так случилось.
В любом случае спасибо за проявленное внимание и помощь.
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Postgre: внезапно изменился локальный сокет

Сообщение skeletor »

Можно поступить так: изменить в конфиге и не перезапускать. Далее создаём симлинк на этот файл, но уже в каталоге /var/run/postgres, что бы скрипт отрабатывал. Ну и при удобном случае перезапустить сервис.
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Postgre: внезапно изменился локальный сокет

Сообщение IMB »

Прописывание сокета в конфиг решило проблему, сейчас скрипт отрабатывает. Но почему так случилось?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Postgre: внезапно изменился локальный сокет

Сообщение sash-kan »

IMB писал(а):
11.11.2010 18:21
Но почему так случилось?
кто-то обновился? если не сервер, так клиент. если не его бинарная часть, так конфигурационная.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Postgre: внезапно изменился локальный сокет

Сообщение skeletor »

Либо глюк, либо действительно сокет был прописан в /tmp, либо существовал симлинк. В чудеса я не верю :)
Спасибо сказали:
Ответить