Что такое "кластер" PostgreSQL и как его создать?

Я очень новичок в базах данных, я не много работал над этим. Теперь я хочу понять термин "кластеры баз данных". Я много гуглил и нашел много полезных ссылок, но я не могу их понять - может быть, потому, что у меня очень мало базовых знаний о базах данных, а также они были на очень техническом языке.

Мне нужен совет по этим пунктам:

  1. что такое кластеры баз данных в PostgreSQL?
  2. как создать кластеры в В PostgreSQL?

1 ответов


база данных PostgreSQL "кластер" - это postmaster и группа субсидиарных процессов, которые управляют общим каталогом данных, содержащим одну или несколько баз данных.

термин "кластер" в PostgreSQL есть историческая причуда*, и совершенно отличается от общего значения "вычислительный кластер", который нормально относится к группам компьютеров, которые работают вместе для достижения более высокой производительности и/или доступности. Также не связано с командой PostgreSQL CLUSTER, который касается организации таблиц.


если Вы читаете это, вы можете на самом деле искать информацию о высокой доступности, репликации или объединении, в этом случае вы должны прочитать репликация, кластеризация и высокая доступность wiki статья и высокая доступность раздел руководства PostgreSQL, затем просмотрите такие инструменты, как repmgr.


A кластер обычно создается для вас при установке PostgreSQL; установка обычно будет initdb новый кластер для вас. Это довольно необычно для базового или промежуточного пользователя, когда-либо нужно создавать кластеры или управлять несколькими кластерами, поэтому это поможет, если вы объясните почему вы хотите сделать это, и что основная проблема, которую вы пытаетесь решить, это. The руководство пользователя возможно, это лучше объяснить, так как предполагается, что вы установка PostgreSQL из исходного кода и относительно немногие люди действительно делают это.

каталог данных каждого кластера создается с помощью initdb и управляется с почтмейстером, который запускается через системную службу (служба Windows,launchd, init, upstart, systemd, etc в зависимости от операционной системы и версии) или сразу через pg_ctl.

кластер имеет встроенные базы данных template0, template1 и postgres; другие базы данных создаются пользователь.

почтмейстер для кластера принимает входящие соединения на прослушивание TCP-порта, и руки их на работника. Только один почтмейстер может работать на данном порту, поэтому каждый кластер должен иметь другой порт.

я написал больше о структуре PostgreSQL в этот предыдущий ответ. См. подзаголовок " отношения? Схема? А?".

как "создать" кластеры в Pg полностью зависит от того, как вы его запускаете. Так как вы спрашивая, Я подозреваю, что вы находитесь в системе Ubuntu, которая использует pg_wrapper в этом случае вы должны использовать pg_wrapper команды типа pg_createcluster.


* путаница между " кластером "в терминологии PostgreSQL и общим использованием термина" кластер " является запутанной и прискорбной исторической странностью, особенно при обсуждении кластеризации экземпляров PostgreSQL. Вы можете иметь кластер кластеров PostgreSQL, который просто болезненный.