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 использует провайдер локали libc, берет настройки из переменных окружения и определяет кодировку, исходя из параметров локали.
Чтобы указать конкретную локаль, используйте параметр --locale.
Если нужно задать отдельные значения для разных аспектов локали (дата, числовые значения и т.д.), доступны параметры --lc-* (смотрите ниже). Обратите внимание, что несовместимые настройки для разных категорий локали могут привести к бессмысленным результатам, поэтому это следует использовать с осторожностью.
Альтернативно, можно выбрать библиотеку ICU, указав --locale-provider=icu, при этом также устанавливается значение по умолчанию только для баз данных, созданных впоследствии. Чтобы задать нужный идентификатор локали ICU, используйте параметр --icu-locale. Однако даже при использовании ICU, initdb все равно инициализирует базовые настройки локали через libc.
После запуска 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
Задает кодировку для шаблонных баз данных. Эта кодировка станет значением по умолчанию для всех новых баз данных.
Если используется libc, кодировка берется из локали, если ICU — будет использована UTF8 (по умолчанию). Наборы символов, поддерживаемые сервером PostgreSQL, описаны в разделе «Поддерживаемые наборы символов».
-g--allow-group-access
Разрешает пользователям из той же группы, что и владелец кластера, доступ к файлам кластера. Игнорируется на Windows.
--icu-locale=locale
Задает идентификатор локали ICU, если используется провайдер ICU.
-k--data-checksums
Включает контрольные суммы на страниц данных. Это помогает выявлять повреждения, вызванные сбоями ввода-вывода, но может повлиять на производительность.
Если параметр установлен, контрольные суммы рассчитываются для всех объектов во всех базах данных. Все сбои контрольных сумм будут видны в представлении pg_stat_database. Подробная информация представлена в разделе «Контрольные суммы данных».
--locale=locale
Устанавливает локаль по умолчанию для всего кластера. Если параметр не указан, используется локаль окружения, в которой выполняется initdb.
Поддержка локализации описана в разделе «Поддержка локали».
--lc-collate=locale--lc-ctype=locale--lc-messages=locale--lc-monetary=locale--lc-numeric=locale--lc-time=locale
Устанавливают локаль по отдельным категориям. Применяется только к соответствующей категории, в отличие от --locale.
--no-locale
Эквивалентно --locale=C.
--locale-provider={``libc``|``icu``}
Задает провайдера локали для баз данных, созданных в новом кластере. Она может быть переопределена в команде CREATE DATABASE, когда впоследствии создаются новые базы данных. По умолчанию это libc.
-N--no-sync
Завершает процесс initdb без ожидания записи файлов на диск. Ускоряет выполнение, но при последующем сбое операционной системы может привести к повреждению каталога данных. По умолчанию утилита ждет, пока все файлы будут надежно записаны на диск.
Параметр используется при тестировании и не предназначен для производственной среды.
--no-instructions
Подавляет вывод инструкций по запуску кластера после завершения initdb. По умолчанию, initdb будет записывать инструкции о том, как запустить кластер в конце своего вывода. Полезно для применения на платформах, где initdb используется в специальных высокоуровневых процедурах, в рамках которых данные инструкции оказываются некорректными.
--pwfile=filename
Считывает пароль суперпользователя из указанного файла. Используется первая строка файла.
-S--sync-only
Принудительно записывает все данные на диск и завершает работу без инициализации. Используется, например, для обеспечения надежного восстановления после изменения fsync с off на on.
-T config--text-search-config=config
Устанавливает конфигурацию текстового поиска по умолчанию. Подробнее описано в default_text_search_config.
-U username
--username=username
Устанавливает имя суперпользователя. По умолчанию совпадает с текущим пользователем ОС, запустившего initdb. По факту, само по себе имя суперпользователя базы данных не важно, но этот параметр позволяет оставить postgres, если имя пользователя ОС другое.
-W--pwprompt
Принудительно запрашивает пароль суперпользователя во время выполнения. Это не важно, если не планируется использовать аутентификацию по паролю. В ином случае этот режим аутентификации оказывается неприменимым, пока пароль не задан.
-X directory--waldir=directory
Указывает каталог для хранения файлов WAL.
--wal-segsize=size
Определяет размер сегмента WAL в мегабайтах. Это размер каждого отдельного файла в журнале WAL. Значение нельзя изменить после инициализации.
Размер по умолчанию составляет 16 мегабайт. Значение должно быть степенью двойки от 1 до 1024 (мегабайт).
Полезно для оптимизации работы WAL в зависимости от нагрузки и требований к архивированию. Кроме того, в базах данных с большим объемом WAL огромное количество файлов WAL в одном каталоге может стать проблемой производительности и управления. Увеличение размера файла WAL уменьшит количество файлов WAL.
-d--debug
Выводит подробные отладочные сообщения, включая те, что генерируются вспомогательными процессами.
--discard-caches
Запускает вспомогательный процесс с параметром debug_discard_caches=1. Заметно замедляет выполнение, используется только для глубокого анализа.
-L directory
Определяет расположение входных файлов, необходимых initdb для создания кластера. Обычно не требуется.
-n
--no-clean
Не удаляет временные файлы при ошибке. По умолчанию, при выявлении ошибки на этапе развертывания кластера, initdb удаляет все файлы, которые к тому моменту были созданы. Параметр полезен для отладки неудачных запусков initdb.
-V--version
Выводит версию initdb и завершается.
-?--help
Показывает справку о параметрах командной строки утилиты initdb и завершается.
Переменные окружения
Утилита поддерживает переменные окружения:
PGDATA
Задает каталог хранения данных кластера, можно изменить параметром -D.
PG_COLOR
Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.
TZ
Задает часовой пояс создаваемого кластера по умолчанию. Значение — полное имя часового пояса.
Утилита initdb использует переменные окружения, поддерживаемые libpq.
Примечания
initdb также может быть вызван через pg_ctl initdb.