我需要关于这些问题的建议:
Postgresql中的术语“cluster”是一个历史怪癖,与“compute cluster”的一般含义完全不同,“compute cluster”通常指的是一起工作以实现更高性能和/或可用性的计算机组。它也与Postgresql命令CLUSTER无关,这是关于组织表。
如果你正在读这个,你可能实际上正在寻找有关高可用性,复制或池的信息,在这种情况下,你应该阅读Replication,Clustering and High Availability wiki文章和high availability部分的Postgresql手册,然后看看工具,如repmgr。
通常在安装Postgresql时为您创建集群;安装时通常会为你initdb一个新的集群。对于基本或中间用户来说,不经常需要创建集群或管理多个集群,这是很不寻常的,所以如果您解释为什么要这样做,以及您尝试解决的根本问题,将有所帮助。 user manual可能可以解释这更好,因为它假设你从源代码安装Postgresql,相对很少的人实际上这样做。
每个集群的数据目录都使用initdb创建,并使用通过系统服务(Windows服务,launchd,init,upstart,systemd等,取决于操作系统和版本)或直接通过pg_ctl启动的postmaster进行管理。
集群具有内置数据库template0,template1和postgres;其他数据库由用户创建。
集群的postmaster通过侦听tcp端口接受传入连接,并将它们交给worker后端。只有一个邮局主管可以在给定端口上运行,因此每个群集必须有不同的端口。
我在this previous answer写了更多关于Postgresql的结构。参见子标题“关系?模式?嗯?
如何在Pg中“创建”集群完全取决于你如何运行它。因为你问,我怀疑你在一个使用pg_wrapper
的Ubuntu系统,在这种情况下,你将使用pg_wrapper命令像pg_createcluster
。
* Postgresql术语中的“集群”和术语“集群”的常见用法之间的混淆是一个混乱和令人遗憾的历史奇怪,特别是在讨论Postgresql实例的聚类时。你可以有一个Postgresql集群集群,这是痛苦的。