2015-09-26 2 views
2

Я довольно новичок в базе данных PostgreSQL. Мы начали использовать его всего неделю назад в рамках наших требований к проекту. Нам потребовалось некоторое время, чтобы понять архитектуру базы данных.Создание ролей в нескольких кластерах postgresql

Прочитав много статей и документов. мы поняли следующее:

  1. База данных кластера в PostgreSQL представляет собой набор баз данных
  2. При установке по умолчанию базы данных, то по умолчанию кластер вызываемая основной, который активируется по умолчанию
  3. Мы может создать и запустить новый кластер в базе данных по следующей команде: pg_createcluster 9.2 cluster1 -d/usr/local/cluster1 --start
  4. В отличие от пользователей в MySQL, в postgresql есть роли, которые являются кластерными при создании. т. е. каждый кластер может иметь разные роли. Роли создаются следующим образом: createuser --interactive

Я установил postgresql в свою систему ubuntu. Я также создал 5 разных кластеров, кроме основного «основного» кластера. Я могу их перечислить с помощью команды pg_lsclusters. Я бы хотел создать в каждом кластере разные роли, называемые test, test2, dev, dev2, live, live2. Когда я создаю роль, он не спрашивает меня о кластере, в котором должна быть создана роль.

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

+0

Перекресток: http://dba.stackexchange.com/questions/116231/create-roles-in-multiple-postgresql-cluster –

+0

Пункт 2 действителен только для Debian/Ubuntu на данный момент, так как это связано с тем, что 'pg_wrapper', который используется этой ОС для управления несколькими экземплярами и версиями PostgreSQL, а не PostgreSQL. –

ответ

0

Название «кластер» в PostgreSQL немного вводит в заблуждение, так как это не совсем кластер. Кластер - это, по сути, каталог файловой системы, принадлежащий пользователю, работающему с системой PostgreSQL. Под каталогом находятся файлы и другие каталоги, содержащие все данные, относящиеся к кластеру. Один кластер может содержать несколько баз данных, все из которых контролируются одним запущенным экземпляром PostgreSQL (этот экземпляр также может упоминаться как postmaster). (Кластер может быть распределен по разным файловым системам с использованием табличных пространств, но это не относится к этому вопросу.)

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

Каждый кластер может содержать несколько баз данных. Кластер может также иметь несколько role s (пользователь, группа), которые совместно используются всеми базами данных в кластере; роли не распределяются между кластерами. В настоящее время в PostgreSQL вы должны использовать команду CREATE ROLE для создания пользователей и групп. У них одинаковые структуры разрешений, и основная разница заключается в том, что пользователи могут входить в систему базы данных, а группы не могут.

Если ваши требования не являются конкретными (т. Е. Вы должны запускать базу данных на конкретной версии выпуска сервера, а другую на другой версии версии сервера), вы должны иметь возможность обойтись только одним кластером.

+0

Спасибо @Patrick за ответ.Я должен автоматизировать схему вращения пароля, где есть несколько машин, каждая из которых имеет один кластер и их набор ролей. Мне нужно написать сценарий bash, который может удаленно подключаться к каждому кластеру и изменять пароль ролей. Чтобы имитировать это требование, я планировал создать 5 кластеров на одной машине и проверить функциональность перед тем, – user5241806

Смежные вопросы