我在 debian squeeze 上安装了一个 postgres db。有一个 /etc/init.d/postresql 来控制数据库。当我输入 时pstree -c
,我得到了两个 postgresql 跟踪。之后/etc/init.d/postgresl stop
我仍剩下一个 postgresql 跟踪。我应该在哪里查找这个问题?是否有一个条目可以在启动时启动另一个 postgresql?我在哪里可以看到它?
答案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 版本 集群 端口状态 所有者 数据目录 日志文件 8.4 主要 5432向下 postgres /var/lib/postgresql/8.4/main /var/log/.. 8.4 测试 5433在线的postgres /var/lib/postgresql/8.4/test /var/log/..
并pstree
返回剩余的痕迹:
|-postgres-+-postgres
| |-postgres
| |-postgres
| `-postgres
要关闭剩余的实例,请明确使用:
# pg_ctlcluster 8.4 test stop