База знаний по Open Source
Авторизация
Поиск по базе знаний

Первое, что надо сделать после установки PostgreSQL на компьютер – это создать новый кластер баз данных. В терминах Postgresql – кластер баз данных это набор баз , которые управляются одним экземпляром сервера. Один экземпляр PostgreSQL может запускать и контролировать набор баз данных, которые изолированы друг от друга, но обслуживаются через один и тот же сокет TCP/IP или UNIX.

Ограничений по количеству запущенных экземпляров PostgreSQL, кроме ограничений накладываемых доступными ресурсами системы и количеством свободных сокетов.

Процесс создания кластера баз данных состоит из создания директории, где будут храниться данные, создания общих таблиц (shared catalog tables) (таблицы, которые относятся ко всему кластеру, а не к какой-либо конкретной базе), создания базы-шаблона template1 (вообще-то создаются две шаблонные базы: template1 и template0. template0  выступает в качестве дублирующей копии для template1, в случае, если последняя будет разрушена) и служебной базы postgres.

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

initdb — создание нового PostgreSQL кластера баз данных

Синтаксис

initdb [ option …] [ –pgdata | -D ] directory

Описание

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

initdb инициализирует локали и кодировки баз данных кластера, которые будут использоваться по умолчанию. Кодировка, порядок сортировки (LC_COLLATE), классы наборов символов (LC_CTYPE, например, верхний, нижний, цифра) могут устанавливаться раздельно при создании новой базы данных. initdb определяет настройки для шаблона template1, которые будут применяться по умолчанию для новых баз.

Чтобы изменить порядок сортировки по умолчанию или классы наборов символов, используются опции –lc-collate и –lc-ctype. Порядок сортировки, отличающийся от C или POSIX, оказывает влияние на производительность. Поэтому необходимо тщательно выбирать необходимую и достаточную локаль при выполнении initdb.

Другие категории локали можно изменить и после старта сервера. Также можно использовать опцию –locale, чтобы задать локаль для всех категорий одновременно, включая порядок сортировки и классы наборов символов. Значения локалей сервера (lc_*) можно вывести командой SHOW ALL. Подробнее см. в Раздел 22.1.

Для изменения кодировки по умолчанию используется опция –encoding.

Options

-A authmethod
–auth=authmethod

Опция указывает на метод аутентификации локальных пользователей, используемый в файле pg_hba.conf (строки host и local). trust используется по умолчанию для облегчения процесса установки.

-D directory
–pgdata=directory

Опция указывает директорию хранения кластера. Это единственная опция, обязательная для команды initdb. Но и ее можно не использовать, а указать в переменной окружения PGDATA, что будет удобным при дальнейшем использовании (postgres обращается к этой же переменной).

-E encoding
–encoding=encoding

Устанавливает кодировку шаблона баз данных по умолчанию, если не указать иное при их создании. По умолчанию устанавливается исходя из указанной локали.

-k
–data-checksums

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

–locale=locale

Устанавливает локаль кластера по умолчанию. Если флаг не указан, локаль устанавливается согласно окружению, в котором исполняется команда initdb.

–lc-collate=locale
–lc-ctype=locale
–lc-messages=locale
–lc-monetary=locale
–lc-numeric=locale
–lc-time=locale

Аналогично –locale устанавливает необходимую локаль, но в заданной категории.

–pwfile=filename

Указывает initdb прочитать пароль суперпользователя БД из файла. В качестве пароля используется первая строка файла

-U username
–username=username

Устанавливает имя суперпользователя кластера. По умолчанию используется имя пользователя, от которого был запущен initdb.

-W
–pwprompt

Указывает initdb на необходимость запросить пароль для суперпользователя. Если не хотите использовать аутентификацию по паролю – эта опция Вам не нужна. В противном же случае  не сможете использовать аутентификацию по паролю до тех пор пока не зададите пароль.

-X directory
–xlogdir=directory

Эта опция определяет каталог где будет храниться лог транзакции

Другие реже используемые опции описаны здесь:

-d
–debug

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

-L directory

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

-n
–noclean

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

Информационные опции:

-V
–version

Выводит версию initdb и останавливается.

-?
–help

Показывает помощь по аргументам команды initdb и останавливается.

Environment

PGDATA

Указывает директорию хранения данных кластера, можно изменить опцией -D.

TZ

Указывает временную зону кластера по умолчанию. Значение это полное имя временной зоны.

И в завершении – initdb можно выполнить и командой pg_ctl initdb.