2012-10-16 29 views
41

我对数据库非常陌生,我没有在这方面工作过很多。现在我想了解术语数据库集群。我搜索了很多并发现了很多有用的链接,但我无法理解它们 - 也许是因为我对数据库的基本知识很少,而且它们的语言非常狡猾。什么是PostgreSQL“集群”,我如何创建一个?

我需要在这些问题上的建议:

  1. 什么是PostgreSQL数据库集群?
  2. 如何在PostgreSQL中创建集群?
+1

我正在使用Windows 7.i使用PostgreSQL安装程序的Windows和版本是9.0 –

回答

79

PostgreSQL数据库“cluster”是一个postmaster和一组补贴进程,全部管理一个包含一个或多个数据库的共享数据目录。

PostgreSQL中的术语"cluster"是一个历史夸克*,和是的"compute cluster"的一般含义,其通常指的是协同工作以实现更高的性能和/或可用性计算机组完全不同。它也与PostgreSQL命令CLUSTER无关,这是关于组织表的。


如果你正在读这篇文章,你可能实际上是在寻找高可用性,复制或池,信息在这种情况下,你应该阅读Replication, Clustering and High Availability wiki文章和PostgreSQL的手册high availability部分,然后看看像repmgr这样的工具。


当您安装PostgreSQL时,通常会为您创建群集;通常initdb会为你安装一个新的群集。基本或中级用户需要创建群集或管理多个群集是非常不寻常的,所以如果你解释了为什么你想这样做,而你试图解决的底层问题是user manual或许可以更好地解释这一点,因为它假设你是从源代码安装PostgreSQL,而实际上这样做的人很少。

每个集群的数据目录与initdb创建并与同时通过系统服务启动邮政局长管理(Windows服务,launchdinitupstartsystemd,等这取决于操作系统和版本上),或者直接通过pg_ctl

该集群内置数据库template0,template1postgres;其他数据库由用户创建。

群集的postmaster通过侦听TCP端口接受传入连接,并将这些连接关闭到工作后端。只有一个postmaster可以在给定的端口上运行,因此每个群集必须有不同的端口。

我在this previous answer中写了更多关于PostgreSQL结构的知识。请参阅子标题“关系?架构?呃?”。

如何在Pg中“创建”群集完全取决于您如何运行它。既然你问了,我怀疑你使用的是使用pg_wrapper的Ubuntu系统,在这种情况下,你会使用pg_wrapper命令,如pg_createcluster


* PostgreSQL中术语一个“簇”,并且术语“集群”的共同使用之间的混乱是一个令人困惑的,令人遗憾的历史古怪,在讨论的PostgreSQL实例的聚类时尤其如此。你可以拥有一组PostgreSQL集群,这很痛苦。

+0

谢谢我在Windows7操作系统 –

+15

@SunilKumar祝你好运。我强烈建议你在学习时要做的主要事情是阅读*整个* PostgreSQL手册,它会教你大量关于SQL和数据库的一般信息,而不仅仅是PostgreSQL。随着'psql'的尝试,尝试一些想法和技巧。一旦你学到了更多东西,并且能够理解更多,你会想要回来再读一遍。另外,学习爱用'EXPLAIN ANALYZE'命令进行性能调优。您还应该阅读关于数据库理论(关系/表格,字段/列,实体,建模,主键和外键等)的介绍性文章。 –

+4

我不觉得你回答了这个问题:什么是postgresql集群?你能否明确解释它是什么,而不是停止它不是什么? – rjurney

相关问题