initdb#

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.