initdb
Эта страница переведена при помощи нейросети GigaChat.
initdb
— создает новый кластер баз данных PostgreSQL.
Синтаксис
initdb [option ...] [--pgdata | -D] directory
Описание
initdb
создает новый кластер баз данных PostgreSQL. Кластер баз данных — это набор баз данных, которые управляются одним сервером.
Процесс создания кластера включает:
- создание каталогов для хранения данных;
- генерацию общих служебных таблиц, которые используются на уровне всего кластера;
- создание трех баз данных:
postgres
,template1
иtemplate0
.
База данных postgres
является базой данных по умолчанию — для пользователей, утилит и внешних приложений.
template1
и template0
служат шаблонами для создания новых баз данных через CREATE DATABASE
:
template0
следует оставить неизменной;template1
можно модифицировать (например, добавить расширения или объекты), и эти изменения будут копироваться в будущие базы данных.
Дополнительную информацию об этом можно найти в разделе «Шаблоны баз данных».
Если initdb
пытается создать каталог, но не имеет на это прав (например, если родительский каталог принадлежит суперпользователю root
), необходимо:
- От имени
root
создать пустую директорию для кластера. - Изменить владельца этой директории на пользователя PostgreSQL с помощью команды
chown
. - Переключиться на этого пользователя (
su
) и запуститьinitdb
.
initdb
нужно запускать от имени того пользователя, который будет владельцем серверного процесса, так как этот пользователь должен иметь доступ ко всем создаваемым файлам и каталогам. Запуск initdb
от имени root
запрещен — он просто не выполнится.
По умолчанию доступ к только что созданному кластеру имеет только владелец. Чтобы разрешить другим пользователям той же группы доступ к файлам кластера (например, для целей резервного копирования), используйте параметр --allow-group-access
.
initdb
задает локаль и набор символов по умолчанию для кластера баз данных. Эти параметры можно установить отдельно для каждой базы данных при ее создании. initdb
определяет эти настройки для шаблонных баз данных, которые будут служить значением по умолчанию для всех других баз данных.
По умолчанию initdb
использует поставщика локализации libc
. Поставщик локализации libc
берет настройки локализации из среды и определяет кодировку из настроек локализации.
Чтобы выбрать другую локализацию для кластера, используйте опцию --locale
. Также существуют отдельные опции --lc-*
и --icu-locale
(см. ниже), позволяющие задать значения для отдельных категорий локализации. Обратите внимание, что несогласованные настройки для различных категорий локализации могут привести к бессмысленным результатам, поэтому использовать эту возможность следует осторожно.
Альтернативно, initdb
может использовать библиотеку ICU для предоставления услуг локализации путем указания параметра --locale-provider=icu
. Сервер должен быть собран с поддержкой библиотеки ICU. Для выбора конкретного идентификатора локализации ICU используется параметр --icu-locale
. Обратите внимание, что по причинам реализации и поддержки устаревшего кода initdb
все равно выберет и инициализирует настройки локализации libc
даже при использовании поставщика локализации ICU.
После запуска initdb
будут выведены итоговые выбранные настройки локали. Если были указаны особые требования или комбинация параметров, проверьте, что результат соответствует ожиданиям.
Более подробную информацию о настройках локализации можно найти в разделе«Поддержка локали».
Чтобы изменить кодировку по умолчанию, используйте параметр --encoding
. Подробнее описано в разделе «Поддержка кодировок».
Параметры
Для утилиты initdb
существуют следующие параметры командной строки:
-A authmethod
--auth=authmethod
- Устанавливает метод аутентификации по умолчанию для локальных пользователей в конфигурационном файле
pg_hba.conf
(строкиhost
иlocal
). Подробнее описано в разделе Файл pg_hba.conf.initdb
предварительно внесет указанный метод аутентификации вpg_hba.conf
в записи как обычных соединений, так и соединений репликации.Не рекомендуется использовать
trust
, если нет полной уверенности в безопасности локальных пользователей. Тем не менее, по умолчанию выбираетсяtrust
для упрощения установки.
--auth-host=authmethod
- Устанавливает метод аутентификации для TCP/IP соединений (строки
host
вpg_hba.conf
).
--auth-local=authmethod
- Устанавливает метод аутентификации для локальных соединений через Unix-сокеты (строки
local
вpg_hba.conf
).
-D directory
--pgdata=directory
- Указывает путь к каталогу, в котором будет размещен кластер баз данных. Параметр обязателен, но его можно указать в переменной окружения
PGDATA
, что будет удобным при дальнейшем использовании (postgres
обращается к этой же переменной).
-E encoding
--encoding=encoding
- Выбирает кодировку шаблонных баз данных. Это также будет кодировкой по умолчанию для любой базы данных, которую создадите позже, если явно не укажете другую. Наборы символов, поддерживаемые сервером PostgreSQL, описаны в «Поддержка кодировок».
По умолчанию кодировка шаблона базы данных выводится из локали. Если указано
--no-locale
(или эквивалентно, если локаль — это C или POSIX), тогда значением по умолчанию является UTF8 для поставщика ICU и SQL_ASCII для поставщикаlibc
.
-g
--allow-group-access
- Разрешает пользователям из той же группы, что и владелец кластера, доступ к файлам кластера. Игнорируется на Windows.
--icu-locale=locale
- Задает локаль ICU при использовании поставщика ICU. Поддержка языковых стандартов описана в разделе «Поддержка языковых стандартов».
--icu-rules=rules
- Определяет дополнительные правила сортировки для настройки поведения стандартной сортировки. Данная возможность поддерживается только для ICU.
-k
--data-checksums
- Включает контрольные суммы на страниц данных. Это помогает выявлять повреждения, вызванные сбоями ввода-вывода, но может повлиять на производительность.
Если параметр установлен, контрольные суммы рассчитываются для всех объектов во всех базах данных. Все сбои контрольных сумм будут видны в представлении pg_stat_database. Подробная информация представлена в разделе «Контрольные суммы данных».
--locale=locale
- Устанавливает локаль по умолчанию для всего кластера. Если параметр не указан, используется локаль окружения, в которой выполняется
initdb
.Поддержка локализации описана в разделе «Поддержка локали».
Если значение
--locale-provider
равноbuiltin
, необходимо указать и установить значения--locale
,--builtin-locale
равными C или C.UTF-8.
--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale
- Устанавливают локаль по отдельным категориям. Применяется только к соответствующей категории, в отличие от
--locale
.
--no-locale
- Эквивалентно
--locale=C
.
--builtin-locale=locale
- Указывает имя локали при использовании встроенного провайдера.
--locale-provider={builtin|libc|icu}
- Эта опция задает поставщик локалей для баз данных, создаваемых в новом кластере. Ее можно переопределить командой
CREATE DATABASE
при последующем создании новых баз данных. Значение по умолчанию —libc
.
--pwfile=filename
- Считывает пароль суперпользователя из указанного файла. Используется первая строка файла.
-T config
--text-search-config=config
- Устанавливает конфигурацию текстового поиска по умолчанию. Подробнее описано в default_text_search_config.
-U username
--username=username
- Устанавливает имя пользователя суперпользователя начальной загрузки. По умолчанию используется имя пользователя операционной системы, под которым выполняется программа
initdb
.
-W
--pwprompt
- Принудительно запрашивает пароль начального суперпользователя во время выполнения. Это не важно, если не планируется использовать аутентификацию по паролю. В ином случае этот режим аутентификации оказывается неприменимым, пока пароль не задан.
-X directory
--waldir=directory
- Указывает каталог для хранения файлов WAL.
--wal-segsize=size
- Определяет размер сегмента WAL в мегабайтах. Это размер каждого отдельного файла в журнале WAL. Значение нельзя изменить после инициализации.
Размер по умолчанию составляет 16 мегабайт. Значение должно быть степенью двойки от 1 до 1024 (мегабайт).
Полезно для оптимизации работы WAL в зависимости от нагрузки и требований к архивированию. Кроме того, в базах данных с большим объемом WAL огромное количество файлов WAL в одном каталоге может стать проблемой производительности и управления. Увеличение размера файла WAL уменьшит количество файлов WAL.
-c name=value
--set name=value
- Принудительно устанавливает параметр сервера
name
в значениеvalue
во время выполнения командыinitdb
, а также сохраняет эту настройку в файлеpostgresql.conf
, чтобы она применялась при последующих запусках сервера. Эту опцию можно указывать несколько раз, чтобы задать несколько параметров. Она особенно полезна, когда окружающая среда такова, что сервер вообще не сможет запуститься с параметрами по умолчанию.
-d
--debug
- Выводит подробные отладочные сообщения, включая те, что генерируются вспомогательными процессами.
--discard-caches
- Запускает вспомогательный процесс с параметром
debug_discard_caches=1
. Заметно замедляет выполнение, используется только для глубокого анализа.
-L directory
- Определяет расположение входных файлов, необходимых
initdb
для создания кластера. Обычно не требуется.
-n
--no-clean
- Не удаляет временные файлы при ошибке. По умолчанию, при выявлении ошибки на этапе развертывания кластера,
initdb
удаляет все файлы, которые к тому моменту были созданы. Параметр полезен для отладки неудачных запусковinitdb
.
-N
--no-sync
- По умолчанию,
initdb
будет ожидать завершения записи всех файлов на диск безопасно. Этот параметр заставляетinitdb
вернуть управление без ожидания, что быстрее, но означает, что последующий крах операционной системы может оставить каталог данных поврежденным. Обычно этот параметр полезен для тестирования, но его не следует использовать при создании производственной установки.
--no-instructions
- По умолчанию,
initdb
запишет инструкции по запуску кластера в конце своего вывода. Данный параметр приводит к тому, что эти инструкции будут опущены. Это в первую очередь предназначено для использования инструментами, которые заключаютinitdb
в поведение, специфичное для платформы, где эти инструкции могут оказаться неверными.
-s
--show
- Показать внутренние настройки и выйти, ничего больше не делая. Это можно использовать для отладки установки
initdb
.
--sync-method=method
- При значении
fsync
, которое является значением по умолчанию,initdb
рекурсивно откроет и синхронизирует все файлы в каталоге данных. Поиск файлов будет следовать символическим ссылкам для каталога WAL и каждого настроенного табличного пространства.В Linux вместо этого можно использовать
syncfs
, чтобы попросить операционную систему синхронизировать всю файловую систему, содержащую каталог данных, файлы WAL и каждое табличное пространство.Этот параметр не оказывает никакого эффекта при использовании
--no-sync
.
-S
--sync-only
- Надежно записать все файлы базы данных на диск и завершить работу. Эта операция не выполняет никаких обычных операций
initdb
. В общем случае данный параметр полезен для обеспечения надежного восстановления после изменения параметраfsync
сoff
наon
.
-V
--version
- Выводит версию
initdb
и завершается.
-?
--help
- Показывает справку о параметрах командной строки утилиты
initdb
и завершается.
Переменные окружения
Утилита поддерживает переменные окружения:
PGDATA
- Задает каталог хранения данных кластера, можно изменить параметром
-D
.
PG_COLOR
- Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения —
always
,auto
иnever
.
TZ
- Задает часовой пояс создаваемого кластера по умолчанию. Значение — полное имя часового пояса.
Утилита initdb
использует переменные окружения, поддерживаемые libpq
.
Примечания
initdb
также может быть вызван через pg_ctl initdb
.