Подтвердить что ты не робот

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

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

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

  • Что такое кластеры базы данных в PostgreSQL?
  • Как создать кластеры в PostgreSQL?
4b9b3361

Ответ 1

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

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


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


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

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

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

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

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

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


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