initdb#
initdb
initdb — создание нового кластера баз данных Tantor BE
Синтаксис
initdb
[option
...] [ --pgdata
| -D
] directory
Описание
initdb
создает новый
Tantor BE кластер баз данных.
Создание кластера баз данных состоит из создания
каталогов, в которых будут храниться данные кластера, генерации общих каталогов
таблиц (таблиц, которые принадлежат всему кластеру, а не какой-либо
конкретной базе данных), и создания баз данных postgres
,
template1
и template0
.
База данных postgres
является базой данных по умолчанию, предназначенной
для использования пользователями, утилитами и сторонними приложениями.
template1
и template0
предназначены
в качестве исходных баз данных, которые будут копироваться последующими командами CREATE
DATABASE
. template0
никогда не должна
изменяться, но вы можете добавлять объекты в template1
,
которые по умолчанию будут копироваться в базы данных, создаваемые позже. См.
Раздел 21.3 для получения более подробной информации.
Хотя initdb
попытается создать указанный каталог данных, у него может не быть разрешения, если родительский каталог желаемого каталога данных принадлежит пользователю root. Чтобы инициализировать в такой настройке, необходимо создать пустой каталог данных от имени root, затем используйте chown
для назначения владельца этого каталога учетной записи пользователя базы данных, затем su
для перехода в пользовательскую учетную запись базы данных и запуска initdb
.
необходимо запустить команду initdb
от имени пользователя, который будет владеть процессом сервера, поскольку серверу необходим доступ к файлам и каталогам, создаваемым командой initdb
. Поскольку сервер не можно запустить от имени root, вы также не должны запускать initdb
от имени root (фактически, она откажется это сделать).
Для обеспечения безопасности новый кластер, созданный командой initdb
,
по умолчанию будет доступен только владельцу кластера. Опция
--allow-group-access
позволяет любому пользователю из той же
группы, что и владелец кластера, читать файлы в кластере. Это полезно
для выполнения резервного копирования в качестве непривилегированного пользователя.
initdb
инициализирует локаль по умолчанию и кодировку набора символов кластера базы данных.
Эти параметры также могут быть установлены отдельно для каждой базы данных при её создании. initdb
определяет эти
настройки для шаблонных баз данных, которые будут служить значениями по умолчанию для
всех других баз данных.
По умолчанию, initdb
использует провайдер локали
libc
(см. Раздел 22.1.4). Провайдер
локали libc
берет настройки локали из
окружения и определяет кодировку из настроек локали.
Чтобы выбрать другую локаль для кластера, используйте опцию
--locale
. Также существуют отдельные опции
--lc-*
и --icu-locale
(см. ниже) для
установки значений для отдельных категорий локали. Обратите внимание, что несогласованные
настройки для различных категорий локали могут привести к нелогичным результатам, поэтому
это следует использовать с осторожностью.
В качестве альтернативы, initdb
может использовать библиотеку ICU для предоставления
услуг локализации, указав --locale-provider=icu
. Сервер должен быть собран с поддержкой ICU. Чтобы выбрать конкретный идентификатор локали ICU,
используйте опцию --icu-locale
. Обратите внимание, что по причинам реализации и для поддержки устаревшего кода,
initdb
все равно выберет и инициализирует настройки локали libc, когда используется провайдер локали ICU.
Когда initdb
запускается, он выводит выбранные настройки локали. Если у вас есть сложные требования или указано несколько опций, рекомендуется проверить, соответствует ли результат задуманному.
Более подробную информацию о настройках локали можно найти в разделе Раздел 22.1.
Чтобы изменить кодировку по умолчанию, используйте --encoding
.
Более подробную информацию можно найти в Раздел 22.3.
Опции
-A
authmethod
--auth=
#authmethod
Этот параметр задает метод аутентификации по умолчанию для локальных пользователей, используемых в файле
pg_hba.conf
(строкиhost
иlocal
). См. Раздел 19.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
Выбирает кодировку шаблонных баз данных. Это также будет кодировка по умолчанию для любой базы данных, которую вы создадите позже, если вы не переопределите её тогда. Наборы символов, поддерживаемые сервером Tantor BE, описаны в Раздел 22.3.1.
По умолчанию кодировка шаблонной базы данных определяется на основе локали. Если указана опция
--no-locale
(или, эквивалентно, если локальC
илиPOSIX
), то по умолчанию используетсяUTF8
для провайдера ICU иSQL_ASCII
для провайдераlibc
.-g
--allow-group-access
#Позволяет пользователям из той же группы, что и владелец кластера, читать все файлы кластера, созданные командой
initdb
. Этот параметр игнорируется в Windows, так как он не поддерживает групповые разрешения в стиле POSIX.--icu-locale=
#locale
Указывает локаль ICU, когда используется провайдер ICU. Поддержка локалей описана в Раздел 22.1.
--icu-rules=
#rules
Указывает дополнительные правила сортировки для настройки поведения сортировки по умолчанию. Это поддерживается только для ICU.
-k
--data-checksums
#Используйте контрольные суммы на страницах данных, чтобы обнаружить повреждения, вызванные системой ввода-вывода, которые в противном случае остались бы незамеченными. Включение контрольных сумм может привести к заметному снижению производительности. Если установлено, контрольные суммы рассчитываются для всех объектов во всех базах данных. Все ошибки контрольных сумм будут отображаться в представлении
pg_stat_database
. См. Раздел 28.2 для получения дополнительной информации.--locale=
#locale
Устанавливает локаль по умолчанию для кластера базы данных. Если эта опция не указана, локаль наследуется из окружения, в котором выполняется команда
initdb
. Поддержка локали описана в разделе Раздел 22.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
(см. Раздел 22.1.4).-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
.-W
--pwprompt
#Заставляет
initdb
запрашивать пароль для предоставления суперпользователю начальной загрузки. Если вы не планируете использовать аутентификацию по паролю, это не важно. В противном случае вы не сможете использовать аутентификацию по паролю, пока не установите пароль.-X
directory
--waldir=
#directory
Этот параметр указывает каталог, в котором должен храниться журнал предварительной записи.
--wal-segsize=
#size
Установите размер сегмента WAL в мегабайтах. Это размер каждого отдельного файла в журнале WAL. Размер по умолчанию составляет 16 мегабайт. Значение должно быть степенью двойки от 1 до 1024 (мегабайт). Эта опция может быть установлена только во время инициализации и не может быть изменена позже.
Может быть полезно настроить этот размер, чтобы контролировать детализацию доставки или архивирования журнала WAL. Кроме того, в базах данных с высоким объемом WAL, большое количество файлов журнала предзаписи в одном каталоге может стать проблемой производительности и управления. Увеличение размера файла журнала предзаписи уменьшит количество файлов журнала предзаписи.
Другие, менее распространенные, варианты также доступны:
-c
name
=value
--set
#name
=value
Принудительно установить параметр сервера
name
вvalue
во время выполнения командыinitdb
, а также записать это значение в сгенерированный файлpostgresql.conf
, чтобы оно применялось при последующих запусках сервера. Этот параметр можно указать несколько раз для установки нескольких параметров. Это в первую очередь полезно, когда среда такова, что сервер не запустится вообще с использованием параметров по умолчанию.-d
--debug
#Вывод отладочной информации от заднего плана загрузки и несколько других сообщений, менее интересных для широкой публики. Задний план загрузки - это программа
initdb
, которую использует для создания каталоговых таблиц. Этот параметр генерирует огромное количество чрезвычайно скучного вывода.--discard-caches
#Запустите загрузочный бэкенд с опцией
debug_discard_caches=1
. Это занимает очень много времени и полезно только для глубокой отладки.-L
#directory
Указывает, где
initdb
должен найти свои входные файлы для инициализации кластера базы данных. Обычно это не требуется. Вам будет сообщено, если вам нужно явно указать их расположение.-n
--no-clean
#По умолчанию, когда
initdb
обнаруживает ошибку, которая мешает ему полностью создать кластер базы данных, он удаляет все файлы, которые могли быть созданы до обнаружения этой проблемы. Этот параметр предотвращает очистку и, следовательно, полезен для отладки.
Другие варианты:
Окружение
PGDATA
#Указывает каталог, в котором должен быть сохранен кластер базы данных; может быть переопределен с помощью опции
-D
.PG_COLOR
#Определяет, следует ли использовать цвет в диагностических сообщениях. Возможные значения:
always
,auto
иnever
.TZ
#Определяет часовой пояс по умолчанию для созданного кластера баз данных. Значение должно быть полным названием часового пояса (см. Раздел 8.5.3).
Примечания
initdb
также может быть вызван с помощью
pg_ctl initdb
.