initdb#
initdb
initdb — создание нового кластера баз данных Tantor SE
Синтаксис
initdb
[option
...] [ --pgdata
| -D
] directory
Описание
initdb
создает новый кластер баз данных Tantor SE. Кластер баз данных представляет собой набор баз данных, управляемых одним экземпляром сервера.
Создание кластера базы данных включает в себя создание каталогов, в которых будут храниться данные базы данных, генерацию общих каталоговых таблиц (таблиц, принадлежащих всему кластеру, а не какой-либо конкретной базе данных) и создание баз данных postgres
, template1
и template0
. База данных postgres
является базой данных по умолчанию, предназначенной для использования пользователями, утилитами и сторонними приложениями. template1
и template0
предназначены как исходные базы данных, которые будут скопированы позднее командами CREATE DATABASE
. Базу данных template0
никогда не следует изменять, но вы можете добавлять объекты в template1
, которые по умолчанию будут скопированы в создаваемые позднее базы данных. Дополнительные сведения см. в разделе Раздел 22.3.
Хотя initdb
попытается создать указанный каталог данных, у него может не быть разрешения, если родительский каталог желаемого каталога данных принадлежит пользователю root. Чтобы инициализировать в такой настройке, необходимо создать пустой каталог данных от имени root, затем используйте chown
для назначения владельца этого каталога учетной записи пользователя базы данных, затем su
для перехода в пользовательскую учетную запись базы данных и запуска initdb
.
необходимо запустить команду initdb
от имени пользователя, который будет владеть процессом сервера, поскольку серверу необходим доступ к файлам и каталогам, создаваемым командой initdb
. Поскольку сервер не можно запустить от имени root, вы также не должны запускать initdb
от имени root (фактически, она откажется это сделать).
Для обеспечения безопасности новый кластер, созданный командой initdb
,
по умолчанию будет доступен только владельцу кластера. Опция
--allow-group-access
позволяет любому пользователю из той же
группы, что и владелец кластера, читать файлы в кластере. Это полезно
для выполнения резервного копирования в качестве непривилегированного пользователя.
initdb
инициализирует кластер базы данных с настройками локали по умолчанию и кодировкой набора символов. Эти настройки также могут быть установлены отдельно для каждой базы данных при ее создании. initdb
определяет эти настройки для шаблонных баз данных, которые будут использоваться по умолчанию для всех остальных баз данных. По умолчанию initdb
использует поставщик локали libc
, берет настройки локали из окружения и определяет кодировку из настроек локали. Это практически всегда достаточно, если нет особых требований.
Для выбора другой локали для кластера используйте опцию --locale
. Также есть отдельные опции --lc-*
(см. ниже), чтобы установить значения для отдельных категорий локали. Обратите внимание, что несогласованные настройки для разных категорий локали могут давать бессмысленные результаты, поэтому это следует использовать с осторожностью.
Альтернативно, библиотека ICU может использоваться для предоставления локализационных сервисов.
(Опять же, это устанавливает только значение по умолчанию для последующих созданных баз данных). Чтобы выбрать эту опцию, укажите --locale-provider=icu
.
Чтобы выбрать конкретный идентификатор локали ICU для применения, используйте опцию --icu-locale
. Обратите внимание, что
по реализационным причинам и для поддержки устаревшего кода,
initdb
по-прежнему будет выбирать и инициализировать настройки локали libc при использовании поставщика локали ICU.
Когда initdb
запускается, он выводит выбранные настройки локали. Если у вас есть сложные требования или указано несколько опций, рекомендуется проверить, соответствует ли результат задуманному.
Более подробную информацию о настройках локали можно найти в разделе Раздел 23.1.
Чтобы изменить кодировку по умолчанию, используйте --encoding
.
Более подробную информацию можно найти в Раздел 23.3.
Опции
-A
authmethod
--auth=
authmethod
Этот параметр задает метод аутентификации по умолчанию для локальных пользователей, используемых в файле
pg_hba.conf
(строкиhost
иlocal
). См. Раздел 20.1 для обзора допустимых значений.initdb
предварительно заполнит записиpg_hba.conf
с использованием указанного метода аутентификации для соединений, не относящихся к репликации, а также для соединений репликации.Не используйте
trust
, если вы не доверяете всем локальным пользователям на вашей системе.trust
является значением по умолчанию для удобства установки.--auth-host=
authmethod
Этот параметр определяет метод аутентификации для локальных пользователей через TCP/IP соединения, используемые в файле
pg_hba.conf
(строкиhost
).--auth-local=
authmethod
Этот параметр определяет метод аутентификации для локальных пользователей через подключения сокетов домена Unix, используемых в файле
pg_hba.conf
(строкиlocal
).-D
directory
--pgdata=
directory
Этот параметр указывает каталог, в котором должен быть сохранен кластер базы данных. Это единственная информация, необходимая для команды
initdb
, но вы можете избежать ее записи, установив переменную средыPGDATA
, что может быть удобно, поскольку сервер баз данных (postgres
) позже сможет найти каталог базы данных по этой же переменной.-E
encoding
--encoding=
encoding
Выбирает кодировку шаблонных баз данных. Это также будет являться кодировкой по умолчанию для любой базы данных, которую вы создадите позже, если вы не переопределите ее. По умолчанию она определяется из локали, если используется поставщик локали libc, или
UTF8
, если используется поставщик локали ICU. Наборы символов, поддерживаемые сервером Tantor SE, описаны в разделе Раздел 23.3.1.-g
--allow-group-access
Позволяет пользователям из той же группы, что и владелец кластера, читать все файлы кластера, созданные командой
initdb
. Этот параметр игнорируется в Windows, так как он не поддерживает групповые разрешения в стиле POSIX.--icu-locale=
locale
Определяет идентификатор локали ICU, если используется поставщик локали ICU.
-k
--data-checksums
Используйте контрольные суммы на страницах данных, чтобы обнаружить повреждения, вызванные системой ввода-вывода, которые в противном случае остались бы незамеченными. Включение контрольных сумм может привести к заметному снижению производительности. Если установлено, контрольные суммы рассчитываются для всех объектов во всех базах данных. Все ошибки контрольных сумм будут отображаться в представлении
pg_stat_database
. См. Раздел 29.2 для получения дополнительной информации.--locale=
locale
Устанавливает локаль по умолчанию для кластера базы данных. Если эта опция не указана, локаль наследуется из окружения, в котором выполняется команда
initdb
. Поддержка локали описана в разделе Раздел 23.1.--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
будет ждать, пока все файлы будут безопасно записаны на диск. Этот параметр позволяетinitdb
вернуться без ожидания, что ускоряет процесс, но означает, что последующий сбой операционной системы может повредить каталог данных. Обычно этот параметр полезен для тестирования, но не следует использовать при создании производственной установки.--no-instructions
По умолчанию,
initdb
будет записывать инструкции о том, как запустить кластер в конце своего вывода. Этот параметр позволяет исключить эти инструкции. Он предназначен в основном для использования инструментами, которые оборачиваютinitdb
в платформо-специфичное поведение, где эти инструкции могут быть некорректными.--pwfile=
filename
Сделайте
initdb
чтение пароля суперпользователя базы данных из файла. Первая строка файла считывается как пароль.-S
--sync-only
Сохраните все файлы базы данных на диск и безопасно завершите работу. Это не выполняет никаких обычных операций initdb. Обычно эта опция полезна для обеспечения надежного восстановления после изменения fsync с
off
наon
.-T
config
--text-search-config=
config
Устанавливает конфигурацию поиска текста по умолчанию. См. default_text_search_config для получения дополнительной информации.
-U
username
--username=
username
Выбирает имя пользователя суперпользователя базы данных. По умолчанию это имя эффективного пользователя, запускающего
initdb
. Не так важно, какое имя у суперпользователя, но можно выбрать привычное имя postgres, даже если имя пользователя операционной системы отличается.-W
--pwprompt
Сделайте
initdb
запрашивать пароль для предоставления суперпользователю базы данных. Если вы не планируете использовать аутентификацию по паролю, это не важно. В противном случае вы не сможете использовать аутентификацию по паролю, пока не установите пароль.-X
directory
--waldir=
directory
Этот параметр указывает каталог, в котором должен храниться журнал предварительной записи.
--wal-segsize=
size
Установите размер сегмента WAL в мегабайтах. Это размер каждого отдельного файла в журнале WAL. Размер по умолчанию составляет 16 мегабайт. Значение должно быть степенью двойки от 1 до 1024 (мегабайт). Эта опция может быть установлена только во время инициализации и не может быть изменена позже.
Может быть полезно настроить этот размер, чтобы контролировать детализацию доставки или архивирования журнала WAL. Кроме того, в базах данных с высоким объемом WAL, большое количество файлов журнала предзаписи в одном каталоге может стать проблемой производительности и управления. Увеличение размера файла журнала предзаписи уменьшит количество файлов журнала предзаписи.
Другие, менее распространенные, варианты также доступны:
-d
--debug
Вывод отладочной информации от заднего плана загрузки и несколько других сообщений, менее интересных для широкой публики. Задний план загрузки - это программа
initdb
, которую использует для создания каталоговых таблиц. Этот параметр генерирует огромное количество чрезвычайно скучного вывода.--discard-caches
Запустите загрузочный бэкенд с опцией
debug_discard_caches=1
. Это занимает очень много времени и полезно только для глубокой отладки.-L
directory
Указывает, где
initdb
должен найти свои входные файлы для инициализации кластера базы данных. Обычно это не требуется. Вам будет сообщено, если вам нужно явно указать их расположение.-n
--no-clean
По умолчанию, когда
initdb
обнаруживает ошибку, которая мешает ему полностью создать кластер базы данных, он удаляет все файлы, которые могли быть созданы до обнаружения этой проблемы. Этот параметр предотвращает очистку и, следовательно, полезен для отладки.
Дополнительные параметры для целей тестирования:
-m
START_MX_ID
--multixact-id=
START_MX_ID
Указывает начальное значение идентификатора множественной транзакции в десятичном формате для нового экземпляра базы данных для тестирования 64-битных xid, значение по умолчанию - 0.
-o
START_MX_OFFSET
--multixact-offset=
START_MX_OFFSET
Указывает начальное значение смещения мультитранзакции в десятичном формате для нового экземпляра базы данных для тестирования 64-битных xid, значение по умолчанию - 0.
-x
START_XID
--xid=
START_XID
Указывает начальное значение xid в десятичном формате для нового экземпляра базы данных для тестирования 64-битных xid, значение по умолчанию - 0.
Другие варианты:
-V
--version
Вывести версию initdb и завершить работу.
-?
--help
Показать справку о командной строке аргументов initdb и выйти.
Окружение
PGDATA
Указывает каталог, в котором должен быть сохранен кластер базы данных; может быть переопределен с помощью опции
-D
.PG_COLOR
Определяет, следует ли использовать цвет в диагностических сообщениях. Возможные значения:
always
,auto
иnever
.TZ
Определяет часовой пояс по умолчанию для созданного кластера баз данных. Значение должно быть полным названием часового пояса (см. Раздел 8.5.3).
Эта утилита, как и большинство других утилит Tantor SE, также использует переменные среды, поддерживаемые libpq (см. Раздел 32.15).
Примечания
initdb
также может быть вызван с помощью
pg_ctl initdb
.