initdb
initdb — создать новый кластер баз данных QHB
Синтаксис
initdb [параметр...][--pgdata|-D]каталог
Описание
Утилита initdb создает новый кластер баз данных QHB. Кластер — это коллекция баз данных, управляемых одним экземпляром сервера.
Создание кластера базы данных состоит из создания каталогов, в которых будут храниться данные базы, создания общих таблиц каталогов (таблиц, которые принадлежат всему кластеру, а не какой-то конкретной базе данных) и создания баз данных template1 и qhb. При последующем создании новой базы данных все данные будут скопированы из базы-шаблона template1. (Следовательно, все, что будет добавлено в template1, автоматически скопируется в каждую новую базу данных.) База данных qhb — это база данных по умолчанию, предназначенная для использования пользователями, утилитами и сторонними приложениями.
Хотя initdb попытается создать указанный каталог данных, ей может не
хватить прав, если родительский каталог нужного каталога данных принадлежит
суперпользователю root. В такой ситуации для запуска этой операции необходимо
создать пустой каталог данных от имени root, затем назначить владельцем этого
каталога пользователя базы данных с помощью chown
, после чего выполнить su
,
чтобы стать пользователем базы данных и запустить initdb.
initdb должна выполняться от имени пользователя, которому будет принадлежать серверный процесс, так как серверу необходим доступ к файлам и каталогам, создаваемым initdb. Поскольку сервер не может запуститься от имени суперпользователя root, initdb тоже нельзя выполнять от его имени. (На самом деле, в таком случае выполнение initdb будет отклонено.)
По соображениям безопасности новый кластер, созданный initdb, будет доступен только владельцу кластера по умолчанию. Параметр --allow-group-access позволяет читать файлы в кластере любому пользователю из группы владельца кластера. Это полезно для выполнения резервного копирования от имени непривилегированного пользователя.
initdb инициализирует локаль и кодировку набора символов баз данных кластера, которые будут использоваться по умолчанию. Кодировка, порядок сортировки (LC_COLLATE) и классы наборов символов (LC_CTYPE, например заглавные, строчные буквы, цифры) можно задавать отдельно при создании новой базы данных. initdb определяет эти параметры для базы-шаблона template1, которая будет использоваться по умолчанию для всех остальных баз данных.
Чтобы изменить порядок сортировки по умолчанию или классы наборов символов, используются параметры --lc-collate и --lc-ctype. Порядок сортировки, отличный от C/RUST или POSIX, снижает производительность. По этим причинам при запуске initdb важно выбрать надлежащую локаль.
Остальные категории локалей можно изменить после запуска сервера. Также можно
использовать параметр --locale, чтобы задать значения по умолчанию для всех
категорий локалей, включая порядок сортировки и классы наборов символов. Все
значения локалей сервера (lc_*) можно вывести командой SHOW ALL
. Более
подробную информацию см. в разделе Поддержка языковых стандартов.
Для изменения кодировки по умолчанию используется параметр --encoding. Более подробную информацию см. в разделе Поддержка кодировок.
Параметры
-A метод_аутентификации
--auth=метод_аутентификации
Этот параметр задает метод аутентификации по умолчанию для локальных
пользователей, используемый в файле qhb_hba.conf (строки host и local).
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=кодировка
Выбирает кодировку шаблона базы данных. Эта кодировка также будет использоваться
по умолчанию для любой вновь создаваемой базы данных, если ее не переопределить.
Значение по умолчанию устанавливается на основе указанной локали, а если это не
работает, выбирается SQL_ASCII. Кодировки, поддерживаемые сервером
QHB, описаны в подразделе Поддержка кодировок.
-g
--allow-group-access
Позволяет пользователям из группы владельца кластера читать все файлы кластера,
создаваемые утилитой initdb.
-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.
-N
--no-sync
По умолчанию initdb ожидает, пока все файлы не будут надежно записаны на
диск. Этот параметр позволяет initdb завершаться быстрее, без ожидания, но
в последующем сбой операционной системы может привести к повреждению каталога
данных. В целом, этот параметр полезен для тестирования, но при создании
производственной установки его применять не следует.
--no-instructions
По умолчанию initdb после всех сообщений выводит инструкции по запуску
кластера. С этим параметром такие инструкции выводиться не будут. Этот параметр
предназначен в первую очередь для применения на платформах, где initdb
используется специальными программными средствами и где данные инструкции, скорее
всего, окажутся некорректными.
--pwfile=имя_файла
Заставляет initdb читать пароль суперпользователя базы данных из файла.
В качестве пароля берется первая строка этого файла.
-S
--sync-only
Безопасно записать все файлы базы данных на диск и завершиться. Никакие другие
обычные операции initdb не выполняются.
-T конфигурация
--text-search-config=конфигурация
Устанавливает конфигурацию текстового поиска по умолчанию. Дополнительную
информацию см. в описании параметра default_text_search_config.
-U имя_пользователя
--username=имя_пользователя
Устанавливает имя суперпользователя базы данных. По умолчанию это имя пользователя
операционной системы, запустившего initdb. В действительности, само по себе
имя суперпользователя неважно, но этот параметр позволяет оставить привычное имя
qhb, даже если имя пользователя операционной системы другое.
-W
--pwprompt
Заставляет initdb запросить пароль, который будет назначен суперпользователю
базы данных. Если не планируется использовать аутентификацию по паролю, это не
важно. В противном случае этот вариант аутентификации будет неприменим, пока не
задан пароль.
-X каталог
--waldir=каталог
Этот параметр задает каталог, в котором должен храниться журнал упреждающей записи.
--wal-segsize=размер
Задает размер сегмента WAL в мегабайтах, то есть размер каждого отдельного
файла в журнале WAL. По умолчанию размер составляет 16 мегабайт. Значение должно
задаваться степенью 2 от 1 до 1024 (в мегабайтах). Этот параметр можно установить
только во время инициализации и нельзя изменить потом.
Этот размер бывает полезно поменять при настройке глубины детализации
трансляции или архивации WAL. Кроме того, в базах данных с большим объемом WAL
значительное количество файлов WAL в каталоге может вызвать проблемы со стороны
производительности и управления. Увеличение размера файлов WAL приведет к
уменьшению их количества.
Также доступны и другие, реже используемые параметры:
-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
Задает для созданного кластера базы данных часовой пояс по умолчанию. Ее значением
должно быть полное название часового пояса (см. подраздел Часовые пояса).
Кроме того, эта утилита, как и большинство других утилит QHB, использует переменные среды, поддерживаемые libpq (см. раздел Переменные среды).
Примечания
initdb также можно вызвать командой qhb_ctl initdb
.