понедельник, 31 декабря 2012 г.

initdb

Имя

initdb - создаёт новый кластер БД PostgreSQL

Краткий обзор

initdb [option...] -- pgdata | -D directory

Описание

initdb создаёт новый кластер БД PostgreSQL. Кластер БД - это набор БД, которые управляются одним экземпляром сервера.
Создание кластер БД состоит из создания директории, где будут храниться данные БД, создания общих таблиц (shared catalog tables) (таблицы, которые относятся ко всему кластеру, а не к какой-либо конкретной БД) и создания БД template1 и postgres. Когда Вы в будущем будете создавать новую БД, то в неё будет копироваться всё из БД template1. (Поэтому всё, установленное в template1 будет автоматически скопировано в каждую БД, созданную позже). БД postgres - это БД по умолчанию для работы пользователей, утилит и сторонних приложений.
Хотя initdb постарается создать заданную папку для данных, тем не менее он может не иметь разрешений сделать это, если родительской папкой или целевой папкой владеет root. В этом случае Вы должны создать новую папку под root, а затем изменить её владельца на пользователя БД, после чего используйте su для запуска из под этого пользователя initdb.
initdb должен быть запущен из под пользователя, который владеет самим серверным процессом, так как сервер должен иметь права доступа к файлам и папке, созданной initdb. Так как сервер не может быть запущен из-под root, то и initdb не стоит запускать из под него (на самом деле - у Вас это и не получится).
initdb инициализирует локаль по умолчанию и кодовую страницу для кластера БД. Кодировка, порядок сравнения (LC_COLLATE) и классы символов (LC_CTYPE, например upper, lower, digit) могут быть заданы для БД уже после её создания. initdb определяет настройки для template1, которые будут служить настройками по умолчанию для всех других БД.
Для того, чтобы изменить порядок сравнения по умолчанию или классы символов используйте опции --lc-collate и --lc-ctype. При этом имейте ввиду, что порядок сравнения, отличный от С или POSIX будет оказывать негативное влияние на производительность. По этому причине важно сделать правильный выбор локали перед запуском initdb.
Все остальные категории локали могут быть изменены позже, после того как сервер уже запущен. Кроме того, Вы можете использовать --locale для того, чтобы задать значение по умолчанию для всех категорий локали, включая порядок сравнения и классы символов. Все серверные значения локали (lc_*) можно посмотреть при помощи SHOW ALL. Более подробно об этом говорится в главе 22.1
Для изменения кодировки по умолчанию используйте --encoding. Более подробно об этом говорится в главе 22.1

Опции

-A authmethod
--auth=authmethod
Эта опция определяет метод аутентификации для локальных пользователей, используемый в pg_hba.conf. Не используйте метод trust, если Вы не доверяете всем локальным пользователям на вашей системе. trust является значением по умолчанию для простоты установки.
-D directory
--pgdata=directory
Эта опция определяет папку, где будет храниться кластер БД. Это единственная информация необходимая для initdb, но и её можно не указывать, если задать переменную окружения PGDATA при условии, что сервер и позже сможет найти кластер по этому адресу.
-E encoding
--encoding=encoding
Задаёт кодировку для шаблона БД. Эта же кодировка будет установлена для любой БД, которую Вы создадите позже, пока Вы не переопределите её в шаблоне. Значение по умолчанию наследуется из локальных настроек или устанавливается в SQL_ASCII. Набор поддерживаемых кодировок перечислен в разделе 22.3.1
--locale=locale
Устанавливает значение по умолчанию локали для кластера БД. Если эта опция не определена, то её значение наследуется из окружения, в котором запущена initdb. Поддерживаемые значения описаны в разделе 22.1
--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. На самом деле это имя практически не важно, но кто-то может захотеть сохранить именем суперпользователя postgres, даже если имя пользователя в системе отличается.
-W
--pwprompt
Указывает initdb на необходимость запросить пароль для суперпользователя БД. Если Вы не хотите использовать аутентификацию по паролю - эта опция Вам не нужна. В противном же случае Вы не сможете использовать аутентификацию по паролю до тех пор пока не зададите пароль.
-X directory
--xlogdir=directory
Эта опция определяет каталог где будет храниться лог транзакции
Кроме того есть и другие, менее используемые параметры:
-d
--debug
Показывает отладочный вывод от bootstrap и некоторые другие сообщения, не такие интересные среднему пользователю. bootstrap - это программа, которую использует initdb для создания общих таблиц. При использовании этой опции будьте готовы к появлению огромного количества жутко неинтересных сообщений.
-L directory
Определяет место, где initdb должен найти файлы для инициализации кластера БД. Обычно это не требуется. Если же Вам это понадобится - то Вам об этом скажут.
-n
--noclean
По умолчанию, когда initdb видит, что какая-то ошибка не позволяет создать кластер БД, он удаляет все файлы, которые могли бы быть созданы до появления этой ошибки. Эта опция препятствует удалению этих файлов, которые могут быть полезны для отладки
-V
--version
Выводит версию initdb и завершает работу
-?
--help
Показывает помощь по команде initdb и завершает работу

Окружение

PGDATA
Определяет папку, где будет храниться кластер БД; может быть переопределено при помощи опции -D
Эта утилита, как и многие другие утилиты PostgreSQL, использует переменные окружения, поддерживаемые libpq (см раздел 31.13)

Примечания

initdb так же может быть вызван при помощи pg_ctl initdb

См также

Комментариев нет:

Отправить комментарий