Программа 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 описаны ниже.
В случае успешного завершения команда initdb создает кластер баз данных в заданном каталоге. Созданный кластер может использоваться PostgreSQL для хранения баз данных.
В листинге 9.7 приведен пример инициализации кластера в каталоге /usr/local/ psql/booktown.