Я установил базу данных postgres на мое сжатие Debian. Для управления базой данных есть /etc/init.d/postresql. Когда я pstree -c
, я получаю две трассировки с postgresql. После /etc/init.d/postgresl stop
у меня остается еще одна трассировка с postgresql. Где я должен искать эту проблему? Есть ли запись для запуска другого postgresql во время загрузки? Где я могу это увидеть?
2
1 ответ
1
Предполагая, что у вас установлен PostgreSQL из пакетов репозитория (например, postgresql-8.4
), это вполне возможно, если второй кластер (скажем, test
) установлен в manual
режиме:
cat /etc/postgresql/8.4/test/start.conf
# Automatic startup configuration
# auto: automatically start/stop the cluster in the init script
# manual: do not start/stop in init scripts, but allow manual startup with
# pg_ctlcluster
# disabled: do not allow manual startup with pg_ctlcluster (this can be easily
# circumvented and is only meant to be a small protection for
# accidents).
manual
Вы можете проверить все зарегистрированные кластеры командой pg_lsclusters
:
pg_lsclusters
Version Cluster Port Status Owner Data directory Log file
8.4 main 5432 online postgres /var/lib/postgresql/8.4/main /var/log/..
8.4 test 5433 online postgres /var/lib/postgresql/8.4/test /var/log/..
pstree -c | grep postgres
результат:
|-postgres-+-postgres
| |-postgres
| |-postgres
| `-postgres
|-postgres-+-postgres
| |-postgres
| |-postgres
| `-postgres
Ручной режим (в отличие от auto
) означает, что кластер БД не обрабатывается скриптом /etc/init.d/postgresql
, поэтому после:
# /etc/init.d/postgresql stop
есть еще один экземпляр работающего сервера:
pg_lsclusters Version Cluster Port Status Owner Data directory Log file 8.4 main 5432 down postgres /var/lib/postgresql/8.4/main /var/log/.. 8.4 test 5433 online postgres /var/lib/postgresql/8.4/test /var/log/..
и pstree
возвращает оставшийся след:
|-postgres-+-postgres
| |-postgres
| |-postgres
| `-postgres
Чтобы явно отключить оставшийся экземпляр, используйте:
# pg_ctlcluster 8.4 test stop