initdb

initdb — создать новый кластер баз данных QHB


Синтаксис

initdb [параметр...][--pgdata|-D]каталог

Описание

Утилита initdb создает новый кластер баз данных QHB.

Создание кластера базы данных состоит из создания каталогов, в которых будут храниться данные базы, создания разделяемых таблиц каталогов (таблиц, которые принадлежат всему кластеру, а не какой-то конкретной базе данных) и создания баз данных qhb, template1 и template0. База данных qhb — это база данных по умолчанию, предназначенная для использования пользователями, утилитами и сторонними приложениями. Базы данных template1 и template0 предназначены для использования в качестве исходных баз данных, которые впоследствии будут копироваться командами CREATE DATABASE. Базу template0 изменять нельзя, но в базу template1 можно добавлять объекты, которые по умолчанию будут копироваться в базы данных, создаваемые позднее. Подробную информацию см. в разделе Шаблоны баз данных.

Хотя initdb попытается создать указанный каталог данных, ей может не хватить прав, если родительский каталог нужного каталога данных принадлежит пользователю root. В такой ситуации для запуска этой операции необходимо создать пустой каталог данных от имени root, затем назначить владельцем этого каталога пользователя базы данных с помощью chown, после чего выполнить su, чтобы стать пользователем базы данных и запустить initdb.

Утилита initdb должна выполняться от имени пользователя, которому будет принадлежать серверный процесс, так как серверу необходим доступ к файлам и каталогам, создаваемым initdb. Поскольку сервер не может запуститься от имени пользователя root, initdb тоже нельзя выполнять от его имени. (На самом деле в таком случае выполнение initdb будет отклонено.)

По соображениям безопасности новый кластер, созданный initdb, будет доступен только владельцу кластера по умолчанию. Параметр --allow-group-access позволяет читать файлы в кластере любому пользователю из группы владельца кластера. Это полезно для выполнения резервного копирования от имени непривилегированного пользователя.

Утилита initdb инициализирует локаль и кодировку набора символов баз данных кластера, которые будут использоваться по умолчанию. Их также можно устанавливать отдельно для каждой базы данных при ее создании. initdb определяет эти параметры для базы-шаблона template1, которая будет использоваться по умолчанию для всех остальных баз данных.

По умолчанию initdb использует провайдера локалей libc (см. подраздел Провайдеры локалей). Провайдер локалей libc получает параметры локали из операционной среды и определяет кодировку, исходя из параметров локали.

Чтобы выбрать для кластера другую локаль, воспользуйтесь параметром --locale. Кроме того, имеются отдельные параметры --lc-* и --icu-locale (см. ниже), позволяющие установить значения для отдельных категорий локали. Обратите внимание, что несовместимые значения для разных категорий локали могут привести к бессмысленным результатам, поэтому их следует тщательно выбирать.

Как вариант, initdb может обеспечить поддержку локалей с помощью библиотеки ICU, указав --locale-provider=icu. Сервер должен быть собран с поддержкой ICU. Чтобы выбрать идентификатор конкретной локали ICU, которую вы желаете применить, используйте параметр --icu-locale. Обратите внимание, что из-за особенностей реализации и для поддержки старого кода initdb все равно будет выбирать и инициализировать параметры локалей libc, даже когда используется провайдер локалей ICU.

При выполнении initdb она будет выводить выбранные ею параметры локали. Если у вас есть особые требования или вы задали несколько параметров, рекомендуется проверить, соответствует ли результат ожиданиям.

Более подробную информацию об установке локалей см. в разделе Поддержка языковых стандартов.

Для изменения кодировки по умолчанию используется параметр --encoding. Более подробную информацию см. в разделе Поддержка кодировок.


Параметры

-A метод_аутентификации
--auth=метод_аутентификации
Этот параметр задает метод аутентификации по умолчанию для локальных пользователей, используемый в файле qhb_hba.conf (строки host и local). Обзор допустимых значения см. в разделе Файл qhb_hba.conf.
Используя заданный метод аутентификации, initdb предварительно внесет в qhb_hba.conf записи как для обычных, так и для репликационных соединений.
Не используйте trust, если не доверяете всем локальным пользователям в вашей системе. Режим trust используется по умолчанию для упрощения процесса установки.

--auth-host=метод_аутентификации
Этот параметр задает метод аутентификации для локальных пользователей, подключающихся по TCP/IP, используемый в qhb_hba.conf (строки host).

--auth-local=метод_аутентификации
Этот параметр задает метод аутентификации для локальных пользователей, подключающихся через сокет домена Unix, используемый в qhb_hba.conf (строки local).

-D каталог
--pgdata=каталог
Этот параметр задает каталог, в котором должен храниться кластер базы данных. Это единственная информация, необходимая initdb, но ее можно не вводить, если установить переменную среды PGDATA. Этот вариант может быть удобен, поскольку впоследствии сервер баз данных (qhb) сможет найти каталог данных по этой переменной.

-E кодировка
--encoding=кодировка
Выбирает кодировку шаблона базы данных. Эта кодировка также будет использоваться по умолчанию для любой вновь создаваемой базы данных, если ее не переопределить. Кодировки, поддерживаемые сервером QHB, описаны в подразделе Поддерживаемые кодировки.
По умолчанию кодировка шаблона базы данных выводится из локали. Если указано --no-locale (или, что равнозначно, задана локаль C или POSIX), то по умолчанию используется UTF8 для провайдера ICU и SQL_ASCII для провайдера libc.

-g
--allow-group-access
Позволяет пользователям из группы владельца кластера читать все файлы кластера, создаваемые утилитой initdb.

--icu-locale=локаль
Задает локал ICU, если используется провайдер ICU. Поддержка локалей описана в разделе Поддержка языковых стандартов.

--icu-rules=правила
Задает дополнительные правила для настройки поведения правила сортировки по умолчанию. Этот параметр поддерживается только для ICU.

-k
--data-checksums
Использовать контрольные суммы в страницах данных, чтобы помочь выявить сбои системы ввода/вывода, которые в противном случае остались бы незамеченными. Включение расчета контрольных сумм может повлечь за собой заметное снижение производительности. Если этот параметр установлен, контрольные суммы будут рассчитываться для всех объектов и во всех базах данных. Все ошибки контрольных сумм будут отображаться в представлении pg_stat_database. Подробную информацию см. в разделе Контрольные суммы данных.

--locale=локаль
Устанавливает локаль по умолчанию для кластера базы данных. Если этот параметр не указан, локаль наследуется от операционной среды, в которой запускается initdb. Поддержка локалей описана в разделе Поддержка языковых стандартов.

--lc-collate=локаль
--lc-ctype=локаль
--lc-messages=локаль
--lc-monetary=локаль
--lc-numeric=локаль
--lc-time=локаль
Схожи с --locale, но устанавливают локаль только в указанной категории.

--no-locale
Равнозначен ключу --locale=C.

--locale-provider={libc|icu}
Этот параметр устанавливает провайдера локалей для баз данных, создаваемых в новом кластере. Его можно переопределить в команде CREATE DATABASE для баз данных, создаваемых впоследствии. Провайдер по умолчанию — libc (см. подраздел Провайдеры локалей).

-N
--no-sync
По умолчанию initdb будет ожидать, пока все файлы не будут надежно записаны на диск. Этот параметр позволяет initdb завершаться быстрее, без ожидания, но в последующем сбой операционной системы может привести к повреждению каталога данных. В целом, этот параметр полезен для тестирования, но при создании производственной установки его применять не следует.

--no-instructions
По умолчанию initdb после всех сообщений выведет инструкции по запуску кластера. С этим параметром такие инструкции выводиться не будут. Этот параметр предназначен в первую очередь для применения на платформах, где initdb используется специальными программными средствами и где данные инструкции, скорее всего, окажутся некорректными.

--pwfile=имя_файла
Заставляет initdb читать пароль начального суперпользователя из файла. В качестве пароля берется первая строка этого файла.

-S
--sync-only
Безопасно записать все файлы базы данных на диск и завершиться. Никакие другие обычные операции initdb не выполняются. В целом, этот параметр полезен для обеспечения надежного восстановления после изменения значения fsync с off на on.

-T конфигурация
--text-search-config=конфигурация
Устанавливает конфигурацию текстового поиска по умолчанию. Дополнительную информацию см. в описании параметра default_text_search_config.

-U имя_пользователя
--username=имя_пользователя
Устанавливает имя начального суперпользователя. По умолчанию это имя пользователя операционной системы, запустившего initdb.

-W
--pwprompt
Заставляет initdb запросить пароль, который будет назначен начальному суперпользователю. Если не планируется использовать аутентификацию по паролю, это не важно. В противном случае этот вариант аутентификации будет неприменим, пока не задан пароль.

-X каталог
--waldir=каталог
Этот параметр задает каталог, в котором должен храниться журнал упреждающей записи.

--wal-segsize=размер
Задает размер сегмента WAL в мегабайтах, то есть размер каждого отдельного файла в журнале WAL. По умолчанию размер составляет 16 мегабайт. Это значение должно задаваться степенью 2 от 1 до 1024 (в мегабайтах). Этот параметр можно установить только во время инициализации и потом нельзя изменить.
Этот размер бывает полезно поменять при настройке глубины детализации трансляции или архивации WAL. Кроме того, в базах данных с большим объемом WAL значительное количество файлов WAL в каталоге может вызвать проблемы со стороны производительности и управления. Увеличение размера файлов WAL приведет к уменьшению их количества.

Также доступны и другие, реже используемые параметры:

-c имя=значение
--set имя=значение
Принудительно устанавливает в серверном параметре с заданным именем указанное значение во время initdb, а также помещает это значение в сгенерированный файл qhb.conf, чтобы оно применялось при последующих запусках сервера. Этот параметр можно задавать более одного раза для установки нескольких параметров. В основном он полезен в случаях, когда среда такова, что с параметрами по умолчанию сервер вообще не запустится.

-d
--debug
Вывести отладочные и другие сообщения загрузчика. Загрузчик — это программа, которую initdb использует для создания таблиц каталога. С этим параметром генерируется большое количество отладочных и информационных сообщений.

--discard-caches
Запустить загрузчик с параметром debug_discard_caches=1. Это очень сильно замедлит выполнение и полезно только для углубленной отладки.

-L каталог
Указывает initdb, где следует искать входные файлы для инициализации кластера базы данных. Обычно это не требуется. В случае необходимости приложение само попросит явно указать их местоположение.

-n
--no-clean
По умолчанию, когда initdb выявляет, что ошибка помешала завершить создание кластера базы данных, она удаляет все созданные к тому моменту файлы. Этот параметр предотвращает удаление файлов, вследствие чего полезен для отладки.

Прочие параметры:

-V
--version
Вывести версию initdb и завершиться.

-?
--help
Показать справку об аргументах командной строки initdb и завершиться.


Операционная среда

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

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

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


Примечания

initdb также можно вызвать командой qhb_ctl initdb.


См. также

qhb_ctl, qhb, раздел Файл qhb_hba.conf