initdb
initdb — создать кластер баз данных Postgres Pro
Синтаксис
initdb [параметр...] [ --pgdata | -D ]каталог
Описание
Команда initdb создаёт новый кластер баз данных Postgres Pro. Кластер — это коллекция баз данных под управлением единого экземпляра сервера.
Инициализация кластера базы данных заключается в создании каталогов для хранения данных, формировании общих системных таблиц (относящихся ко всему кластеру, а не к какой-либо базе) и создании баз данных template1 и postgres. Впоследствии все новые базы создаются на основе шаблона template1 (все дополнения, установленные в template1 автоматически копируются в каждую новую базу данных). База postgres используется пользователями, утилитами и сторонними приложениями по умолчанию.
При попытке создать каталог для хранения данных initdb может столкнуться с нехваткой прав доступа, если этот каталог принадлежит суперпользователю root. В таком случае необходимо назначить пользователя базы данных владельцем этого каталога при помощи chown. Затем выполнить su для смены пользователя и дальнейшего выполнения initdb.
Команда initdb должна выполняться от имени пользователя, под которым будет запускаться сервер, так как ему необходим полный доступ к файлам и каталогам, создаваемым initdb. Сервер не может запускаться от имени суперпользователя, поэтому выполнение команды initdb от его лица будет отклонено.
initdb инициализирует локали и кодировки баз данных кластера, которые будут использоваться по умолчанию. Кодировка, порядок сортировки (LC_COLLATE), классы наборов символов (LC_CTYPE, например, заглавные, строчные буквы, цифры) могут устанавливаться раздельно при создании новой базы данных. initdb определяет параметры локали для шаблона template1, которые будут применяться по умолчанию для новых баз.
Чтобы изменить порядок сортировки по умолчанию или классы наборов символов, используются параметры --lc-collate и --lc-ctype. Порядок сортировки, отличающийся от C или POSIX, оказывает влияние на производительность. Поэтому необходимо тщательно выбирать необходимую и достаточную локаль при выполнении initdb.
Другие категории локали можно изменить и после старта сервера. Также можно использовать параметр --locale, чтобы задать локаль для всех категорий одновременно, включая порядок сортировки и классы наборов символов. Значения локалей сервера (lc_*) можно вывести командой SHOW ALL. Узнать об этом больше можно в Разделе 22.1.
Для изменения кодировки по умолчанию используется параметр --encoding. Узнать об этом больше можно в Разделе 22.3.
Параметры
-Aauthmethod--auth=authmethodПараметр определяет метод аутентификации по умолчанию для локальных пользователей, используемый в файле
pg_hba.conf(строкиhostиlocal). Программаinitdbпредварительно внесёт указанный метод аутентификации вpg_hba.confв записи как обычных соединений, так и соединений репликации.Не используйте
trust, если не можете доверять всем локальным пользователям в вашей системе. Режимtrustиспользуется по умолчанию для облегчения процесса установки.--auth-host=authmethodПараметр указывает метод аутентификации для локальных пользователей, подключающихся по TCP/IP, используемый в
pg_hba.conf(строкиhost).--auth-local=authmethodПараметр выбирает метод аутентификации локальных пользователей, подключающихся через Unix-сокет, используемый в
pg_hba.conf(строкиlocal).-Dкаталог--pgdata=каталогПараметр указывает каталог хранения данных кластера. Это единственный обязательный параметр для команды
initdb. При этом его можно указать в переменной окруженияPGDATA, что будет удобным при дальнейшем использовании (postgresобращается к этой же переменной).-Eкодировка--encoding=кодировкаУстанавливает кодировку шаблона и новых баз данных по умолчанию, если не указать иное при их создании. По умолчанию устанавливается исходя из указанной локали, и далее, если не удалось определить, выбирается
SQL_ASCII. Кодировки, поддерживаемые сервером Postgres Pro, описаны в Подразделе 22.3.1.-k--data-checksumsПрименять контрольные суммы на страницах данных для выявления сбоев при вводе/выводе, которые иначе останутся незамеченными. Расчёт контрольных сумм может повлечь заметное снижение производительности. Этот режим можно включить только при инициализации и нельзя изменить позже. Когда контрольные суммы включены, они рассчитываются для всех объектов и во всех базах данных.
По умолчанию кластеры Postgres Pro инициализируются с включёнными контрольными суммами. Чтобы изменить это поведение, добавьте параметр
--no-data-checksums.--no-data-checksumsОтключить контрольные суммы в страницах данных.
По умолчанию кластеры Postgres Pro инициализируются с включёнными контрольными суммами.
--locale=локаль[@провайдер]Устанавливает локаль кластера по умолчанию. Если флаг не указан, локаль устанавливается согласно окружению, в котором исполняется команда
initdb. Поддерживаемые локали описаны в Разделе 22.1.Кроме того, вы можете задать провайдер основного правила сортировки после символа
@. Допустимые варианты этого указания:icuиlibc. За подробностями обратитесь к Подразделу 22.2.2.--lc-collate=локаль[@провайдер]--lc-ctype=локаль--lc-messages=локаль--lc-monetary=локаль--lc-numeric=локаль--lc-time=локальАналогично
--localeустанавливает необходимую локаль, но в заданной категории.--no-localeАналогично флагу
--locale=C.-N--no-syncПо умолчанию
initdbждёт, пока все файлы не будут надёжно записаны на диск. С данным параметромinitdbзавершается быстрее, без ожидания, но в случае неожиданного сбоя операционной системы каталог данных может оказаться испорченным. Этот параметр может быть полезен при тестировании; в производственной среде применять его не следует.--pwfile=имя_файлаПринуждает
initdbчитать пароль суперпользователя базы данных из файла, первая строка которого используется в качестве пароля.-S--sync-onlyБезопасно записывает все файлы базы на диск и останавливается. Другие операции initdb при этом не выполняются.
-Tконфигурация--text-search-config=конфигурацияУстанавливает конфигурацию текстового поиска по умолчанию. За дополнительными сведениями обратитесь к default_text_search_config.
-Uимя_пользователя--username=имя_пользователяУстанавливает имя суперпользователя базы данных. По умолчанию используется имя пользователя ОС, запустившего
initdb. По факту, само по себе имя суперпользователя базы данных не важно, но этот параметр позволяет оставить привычное postgres, если имя пользователя ОС другое.-W--pwpromptУказывает
initdbзапросить пароль, который будет назначен суперпользователю базы данных. Это не важно, если не планируется использовать аутентификацию по паролю. В ином случае этот режим аутентификации оказывается неприменимым, пока пароль не задан.-Xкаталог--waldir=каталогЭтот параметр указывает каталог для хранения журнала предзаписи.
Другие реже используемые параметры описаны здесь:
-d--debugВыводит отладочные сообщения загрузчика и ряд других сообщений, не очень интересных широкой публике. Загрузчик — это приложение
initdb, используемое для создания каталога таблиц. С этим параметром выдаётся очень много крайне скучных сообщений.-LкаталогУказывает
initdb, где необходимо искать входные файлы для развёртывания кластера. Обычно это не требуется. Приложение само запросит эти данные, если будет необходимо.-n--no-cleanПо умолчанию, при выявлении ошибки на этапе развёртывания кластера,
initdbудаляет все файлы, которые к тому моменту были созданы. Параметр предотвращает очистку файлов для целей отладки.
Прочие параметры:
-V--versionВыводит версию initdb и останавливается.
-?--helpПоказывает помощь по аргументам команды initdb и останавливается.
Переменные окружения
PGDATAУказывает каталог хранения данных кластера, можно изменить параметром
-D.TZУказывает часовой пояс кластера по умолчанию. Значение — это полное имя часового пояса (см. Подраздел 8.5.3).
Эта утилита, как и большинство других утилит Postgres Pro, также использует переменные среды, поддерживаемые libpq (см. Раздел 31.14).
Замечания
initdb можно выполнить командой pg_ctl initdb.