Иллюстрированный самоучитель по PostgreSQL

Инициализация файловой системы

Перед созданием базы данных в кластере необходимо предварительно выполнить инициализацию файловой системы. В PostgreSQL это можно сделать двумя способами: либо, как при установке PostgreSQL, воспользоваться приложением initdb для создания нового кластера (см. главу 2), либо создать вторичный каталог данных при помощи приложения initlocation.

Кластер представляет собой несколько взаимосвязанных баз данных. Один экземпляр процесса postmaster в любой момент времени работает только с одним кластером. При помощи приложения initlocation можно создать базы данных, принадлежащие существующим кластерам, но хранящиеся в других каталогах данных.

Инициализация кластера баз данных

Программа initdb создает и инициализирует новый кластер баз данных в файловой системе. Как говорилось выше, кластер баз данных представляет собой организационную структуру, в которой создаются базы данных. В системе уже должен существовать кластер в каталоге данных, инициализация которого была описана в главе 2.

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

После создания нового кластера приложением initdb файловая система этого кластера будет принадлежать пользователю операционной системы, запустившему приложение.

Внимание
Не запускайте программу initdb с правами root! Обычный пользователь, создавший кластер, становится владельцем нового кластера, то есть его суперпользователем
.

Программа initdb также может исправить поврежденную базу данных template 1, для чего она запускается с ключом – t (или --template). В этом случае база данных template 1 строится заново.

Синтаксис команды запуска программы initdb:

Initdb [ – D каталог \ --pgdata=Karanor ]
[ – 1 sysid | --sysid=sysid ]
[ – W | --pwprompt ]
t – E кодировка | --еncoding=кодировка ]
[ – L каталог \ --pglib=каталог ]
[ – n | --noclean ]
[ – d | --debug ]
С – t I --template ]

Ключи initdb описаны ниже.

  • – D каталог \ --pgdata=Kamonoz. Каталог, в котором инициализируется новый кластер баз данных. Если имя каталога не задано, команда initdb проверяет значение переменной PGDATA.
  • – i sysid \ --sysid=sysid. Системный идентификатор суперпользователя нового кластера. Если параметр не задан, используется системный идентификатор пользователя, запустившего программу initdb.
  • – W | --pwprompt. Приглашение для ввода пароля после подключения.
  • – Е кодировка \ --еncoding=кодировка. Имя расширенной кодировки для базы данных-шаблона в новом кластере. Заданная кодировка будет использоваться по умолчанию для всех баз данных, создаваемых в этом кластере. Ключ используется лишь в том случае, если вы активизировали поддержку расширенных кодировок в PostgreSQL
  • – L каталог pglib=каталог. Местонахождение библиотечных файлов PostgreSQL, используемых программой initdb при создании кластера. Необходимость в передаче этого параметра возникает крайне редко. Обычно местонахождение файлов известно программе initdb, а если неизвестно – она запросит необходимые данные.
  • – t --template. С ключом template программа initdb заново инициализирует базу данных template 1 в существующем кластере баз данных. Такая возможность может пригодиться при обновлении версии PostgreSQL, при потере или нарушении целостности данных.
  • – n | --noclean. Ключ nodean означает, что программа initdb не должна удалять файлы, если ей не удастся завершить создание кластера из-за ошибки. Используется только при отладке.
  • – d | --debug. Ключ debug обеспечивает вывод отладочной информации при создании служебных таблиц.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.