initdb#

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 обнаруживает ошибку, которая мешает ему полностью создать кластер базы данных, он удаляет все файлы, которые могли быть созданы до обнаружения этой проблемы. Этот параметр предотвращает очистку и, следовательно, полезен для отладки.

Другие варианты:

-V
--version #

Вывести версию initdb и завершить работу.

-?
--help #

Показать справку о командной строке аргументов initdb и выйти.

Окружение

PGDATA #

Указывает каталог, в котором должен быть сохранен кластер базы данных; может быть переопределен с помощью опции -D.

PG_COLOR #

Определяет, следует ли использовать цвет в диагностических сообщениях. Возможные значения: always, auto и never.

TZ #

Определяет часовой пояс по умолчанию для созданного кластера баз данных. Значение должно быть полным названием часового пояса (см. Раздел 8.5.3).

Примечания

initdb также может быть вызван с помощью pg_ctl initdb.