Конфигурация Postgresql, где находится Linux

Обновлено: 18.05.2024

Все имена параметров нечувствительны к регистру. Каждый параметр принимает значение одного из пяти типов: логическое значение, целое число, число с плавающей запятой, строку или перечисление. Логические значения могут быть записаны как on, off, true, false, yes , no, 1, 0 (все без учета регистра) или любой их однозначный префикс.

Некоторые настройки указывают значение памяти или времени. Каждый из них имеет неявную единицу измерения, которая представляет собой килобайты, блоки (обычно восемь килобайт), миллисекунды, секунды или минуты. Единицы измерения по умолчанию можно найти по ссылке pg_settings.unit. Для удобства можно явно указать другую единицу измерения. Допустимые единицы памяти: kB (килобайты), MB (мегабайты) и GB (гигабайты); допустимые единицы времени: ms (миллисекунды), s (секунды), min (минуты), h (часы). ) и d (дни). Обратите внимание, что множитель для блоков памяти равен 1024, а не 1000.

Параметры типа "enum" задаются так же, как строковые параметры, но ограничены набором значений. Допустимые значения можно найти в pg_settings.enumvals. Значения параметров перечисления нечувствительны к регистру.

18.1.2. Установка параметров через файл конфигурации

Один из способов задать эти параметры — отредактировать файл postgresql.conf, который обычно хранится в каталоге данных. (Копия по умолчанию устанавливается там при инициализации каталога кластера базы данных.) Пример того, как может выглядеть этот файл:

Файл конфигурации перечитывается всякий раз, когда главный серверный процесс получает сигнал SIGHUP; проще всего это сделать, запустив pg_ctl reload из командной строки или вызвав функцию SQL pg_reload_conf() . Основной серверный процесс также распространяет этот сигнал на все запущенные в данный момент серверные процессы, так что существующие сеансы также получают новое значение. Кроме того, вы можете напрямую отправить сигнал одному серверному процессу. Некоторые параметры можно задать только при старте сервера; любые изменения их записей в файле конфигурации будут игнорироваться до тех пор, пока сервер не будет перезапущен. Недопустимые значения параметров в файле конфигурации также игнорируются (но регистрируются) при обработке SIGHUP.

18.1.3. Другие способы установки параметров

Второй способ установить эти параметры конфигурации — указать их в качестве параметра командной строки для команды postgres, например:

Параметры командной строки переопределяют любые конфликтующие параметры в postgresql.conf. Обратите внимание, что это означает, что вы не сможете изменить значение на лету, отредактировав postgresql.conf, поэтому, хотя метод командной строки может быть удобным, позже он может стоить вам гибкости.

Иногда полезно указать параметр командной строки только для одного конкретного сеанса. Для этой цели на стороне клиента можно использовать переменную среды PGOPTIONS:

(Это работает для любого клиентского приложения на основе libpq, а не только для psql.) Обратите внимание, что это не будет работать для параметров, которые фиксируются при запуске сервера или должны быть указаны в postgresql.conf.

Кроме того, можно назначить набор параметров для пользователя или базы данных. При каждом запуске сеанса загружаются настройки по умолчанию для задействованного пользователя и базы данных. Команды ALTER ROLE и ALTER DATABASE соответственно используются для настройки этих параметров. Настройки для базы данных переопределяют все, что получено из командной строки postgres или файла конфигурации, и, в свою очередь, переопределяются настройками для каждого пользователя; оба переопределяются настройками сеанса.

Некоторые параметры можно изменить в отдельных сеансах SQL с помощью команды SET, например:

Если SET разрешено, он переопределяет все другие источники значений для параметра. Некоторые параметры нельзя изменить с помощью SET: например, если они управляют поведением, которое нельзя изменить без перезапуска всего сервера PostgreSQL. Кроме того, для изменения некоторых параметров требуется разрешение суперпользователя с помощью SET или ALTER.

18.1.4. Изучение настроек параметров

Команда SHOW позволяет просматривать текущие значения всех параметров.

Виртуальная таблица pg_settings также позволяет отображать и обновлять параметры времени выполнения сеанса; см. Раздел 47.66 для подробностей и описания различных типов переменных и когда их можно изменить. pg_settings эквивалентна SHOW и SET, но может быть более удобной в использовании, поскольку ее можно объединить с другими таблицами или выбрать из любой таблицы. желаемое условие выбора. Он также содержит больше информации о каждом параметре, чем доступно из SHOW.

18.1.5. Файл конфигурации включает

Помимо настроек параметров, файл postgresql.conf может содержать директивы включения, которые указывают другой файл для чтения и обработки, как если бы он был вставлен в файл конфигурации в этот момент. Эта функция позволяет разделить файл конфигурации на физически отдельные части. Включить директивы просто выглядят так:

Если имя файла не является абсолютным путем, оно берется относительно каталога, содержащего ссылающийся файл конфигурации. Включения могут быть вложенными.

Есть также директива include_if_exists, которая действует так же, как директива include, за исключением поведения, когда указанный файл не существует или не может быть прочитан. Обычный include расценит это как состояние ошибки, но include_if_exists просто записывает сообщение и продолжает обработку ссылающегося файла конфигурации.

Файл postgresql.conf также может содержать директивы include_dir, которые указывают полный каталог файлов конфигурации для включения. Он используется аналогично:

Неабсолютные имена каталогов следуют тем же правилам, что и директивы включения отдельных файлов: они относятся к каталогу, содержащему ссылающийся файл конфигурации. В этом каталоге будут включены только файлы, не входящие в каталог, имена которых заканчиваются суффиксом .conf. Имена файлов, начинающиеся с символа ., также исключаются во избежание ошибок, поскольку на некоторых платформах они скрыты. Несколько файлов в каталоге include обрабатываются в порядке имен файлов. Имена файлов упорядочены по правилам локали C, т.е. цифры перед буквами и прописные буквы перед строчными.

Включаемые файлы или каталоги можно использовать для логического разделения частей конфигурации базы данных вместо одного большого файла postgresql.conf. Рассмотрим компанию, в которой есть два сервера баз данных, каждый из которых имеет разный объем памяти. Вероятнее всего, оба элемента конфигурации будут общими для таких вещей, как ведение журнала. Но параметры, связанные с памятью на сервере, будут различаться между ними. Также могут быть настройки для конкретных серверов. Один из способов справиться с этой ситуацией — разбить пользовательские изменения конфигурации вашего сайта на три файла. Вы можете добавить это в конец файла postgresql.conf, чтобы включить их:

Все системы будут иметь один и тот же shared.conf. Каждый сервер с определенным объемом памяти может использовать один и тот же файл memory.conf; у вас может быть один для всех серверов с 8 ГБ ОЗУ, другой для тех, у кого 16 ГБ. И, наконец, server.conf может содержать действительно специфичную для сервера информацию о конфигурации.

Еще одна возможность — создать каталог файлов конфигурации и поместить эту информацию в файлы. Например, ссылка на каталог conf.d может быть указана в конце postgresql.conf:

Тогда вы можете назвать файлы в каталоге conf.d следующим образом:

Это показывает четкий порядок, в котором эти файлы будут загружены. Это важно, потому что будет использоваться только последний параметр, обнаруженный при чтении сервером своей конфигурации. Значение, установленное в conf.d/02server.conf в этом примере, переопределит значение, заданное в conf.d/01memory.conf.

Вместо этого вы можете использовать этот подход к каталогу конфигурации, называя эти файлы более описательно:

Такое расположение дает уникальное имя для каждого варианта файла конфигурации. Это может помочь устранить двусмысленность, когда все конфигурации нескольких серверов хранятся в одном месте, например в репозитории контроля версий. (Хранение файлов конфигурации базы данных под контролем версий — еще одна хорошая практика, которую следует учитывать).

Недавно я установил PostgreSQL на Ubuntu с пакетом EnterpriseDB. Я могу подключиться к базе данных локально, но не могу ее настроить, потому что не могу найти файлы конфигурации. Я перерыл весь жесткий диск и нашел только такие примеры, как pg_hba.conf.sample

Где файлы PostgreSQL .conf?

Если вы ищете файл запуска sql, он называется .psqlrc, и вы можете открыть его с помощью текстового редактора в своем терминале.

27 ответов 27

Или спросите у своей базы данных:

или, если вы вошли в систему как пользователь Ubuntu:

И если вы не знаете, вы можете получить доступ к утилите командной строки через $YOUR_PG_INSTALL_DIR/pgsql/bin/psql

Ubuntu 13.04, установленная с помощью программного центра:

Мое местоположение:

Я не уверен, можно ли полагаться на locate, потому что файл, а также его каталог могут быть доступны исключительно пользователям postgres или только пользователям продуктов.

@A-B-B ". доступен исключительно пользователям root, postgres или только пользователям продуктов." Запустите его как root, и это надежно.

Я бы не стал доверять выводу locate. Представьте себе эти шаги: устанавливается Postgres версии x, updateb считывает расположение всех файлов, postgres обновляется до версии x+1. Теперь кэшированные данные locate устарели. Это ненадежно.

Не говоря уже о том, что могут быть всевозможные файлы postgresql.conf, торчащие в каталогах с примерами, образцы кода электронных книг, загрузки github и т. д. Это действительно то, что нужно попробовать после того, мы исчерпали другие возможности.

Где мои файлы postgres *.conf?

Запросите базу данных с помощью запроса sql:

Причина, по которой у вас могут возникнуть проблемы с поиском postgresql.conf, заключается в том, что он принадлежит postgres, а не root.

Вот где у меня в Fedora 17:

Обратите внимание, что он принадлежит postgres:

Он имеет разрешение 600, что объясняет, почему вам трудно найти его с помощью поиска файлов. Расположение postgresql.conf зависит от используемой операционной системы.

Вот содержимое моего:


Чтобы узнать расположение файла pg_hba.conf, вы также можете запросить базу данных, например

Вы должны получить что-то вроде

Если вы только что установили его, возможно, locate не поможет. В этом случае служба должна быть запущена, и вы можете запустить

чтобы увидеть, откуда postgresql-master загружает файлы конфигурации.

На Mac (Postgres установлен с помощью brew):


Печать файла pg_hba.conf:

Распечатать расположение файла postgresql.conf:



Для CentOS 6 и 7 и postgresql 9.2 (и ниже, возможно, Fedora и Redhat):

Для CentOS 6 и 7 postgresql 9.3 или 9.4 (и выше, я полагаю):

Для Ubuntu 14 и postgresql 9.3:


Возможно, вы еще не инициализировали базу данных. После установки postgres, но до инициализации базы данных файлы postgres*.sql будут отсутствовать. После инициализации базы данных появятся файлы postgres*.sql. (Centos 6, Postgres 9.3 продемонстрированы здесь)

Вы можете найти другие файлы conf с помощью следующей команды:

Примечание. См. использование man:

30-07-2019

В Windows 10 профессиональная:


Поскольку у меня нет доступа к учетной записи postgres (поэтому я не могу запустить SHOW config_file ), а мой postgres установлен в Windows, ни один из ответов мне не помог, поэтому я делюсь своим местоположением файла для будущих читателей Windows:

В большинстве случаев: в $PGDATA , обычно это /var/lib/postgresql/data или что-то подобное (по крайней мере, это путь по умолчанию, если вы используете образы Docker).

Для Debian 9 я нашел свой, используя ответ Франке Хейкенса - $ /etc/postgresql/9.6/main/postgresql.conf

Мне нравится эта ветка, потому что в ней описаны расположения по умолчанию для различных файлов postgresql.conf для различных архитектур.

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

PostgreSQL – это объектно-реляционная система баз данных, обладающая функциями традиционных коммерческих систем баз данных с улучшениями, которые можно найти в системах СУБД следующего поколения.

Установка

Чтобы установить PostgreSQL, выполните в командной строке следующую команду:

Служба базы данных автоматически настраивается с допустимыми значениями по умолчанию, но ее можно настроить в соответствии с вашими особыми потребностями.

Конфигурация

PostgreSQL поддерживает несколько методов аутентификации клиентов. В Ubuntu одноранговый узел является методом аутентификации по умолчанию, используемым для локальных подключений, в то время как scram-sha-256 используется по умолчанию для подключений к хосту (до Ubuntu 21.10 это был md5). Пожалуйста, обратитесь к Руководству администратора PostgreSQL, если вы хотите настроить альтернативы, такие как Kerberos.

В следующем обсуждении предполагается, что вы хотите включить соединения TCP/IP и использовать метод MD5 для проверки подлинности клиента. Файлы конфигурации PostgreSQL хранятся в каталоге /etc/postgresql//main. Например, если вы устанавливаете PostgreSQL 12, файлы конфигурации хранятся в каталоге /etc/postgresql/12/main.

Совет

Чтобы настроить аутентификацию IDENT, добавьте записи в файл /etc/postgresql/12/main/pg_ident.conf. В файле есть подробные комментарии, которые помогут вам.

Чтобы другие компьютеры могли подключаться к вашему серверу PostgreSQL, отредактируйте файл /etc/postgresql/12/main/postgresql.conf

Примечание

Чтобы разрешить подключения как IPv4, так и IPv6, замените «localhost» на «::»

Подробнее о других параметрах см. в файле конфигурации или в документации PostgreSQL, чтобы узнать, как их можно редактировать.

Теперь, когда мы можем подключиться к нашему серверу PostgreSQL, следующим шагом будет установка пароля для пользователя postgres. Выполните следующую команду в терминале, чтобы подключиться к базе данных шаблонов PostgreSQL по умолчанию:

Приведенная выше команда подключается к базе данных PostgreSQL template1 от имени пользователя postgres. Как только вы подключитесь к серверу PostgreSQL, вы увидите приглашение SQL. Вы можете запустить следующую команду SQL в приглашении psql, чтобы настроить пароль для пользователя postgres.

После настройки пароля отредактируйте файл /etc/postgresql/12/main/pg_hba.conf, чтобы использовать аутентификацию MD5 с пользователем postgres:

Наконец, вам следует перезапустить службу PostgreSQL, чтобы инициализировать новую конфигурацию. В командной строке терминала введите следующее, чтобы перезапустить PostgreSQL:

Предупреждение

Приведенная выше конфигурация никоим образом не завершена. Пожалуйста, обратитесь к Руководству администратора PostgreSQL, чтобы настроить дополнительные параметры.

Вы можете проверить подключение к серверу с других компьютеров с помощью клиента PostgreSQL.

Примечание

Замените доменное имя на фактическое доменное имя вашего сервера.

Потоковая репликация

PostgreSQL имеет удобную функцию, называемую потоковой репликацией, которая позволяет непрерывно отправлять и применять записи WAL XLOG к некоторому числу резервных серверов, чтобы поддерживать их в актуальном состоянии. Здесь представлен очень простой и простой способ репликации сервера PostgreSQL (главного) на резервный сервер.

Сначала создайте пользователя репликации на главном сервере, который будет использоваться резервным сервером:

Давайте настроим главный сервер для включения потоковой репликации. Откройте файл /etc/postgresql/12/main/postgresql.conf и убедитесь, что у вас есть следующие строки:

Также отредактируйте файл /etc/postgresql/12/main/pg_hba.conf, добавив дополнительную строку, разрешающую подключение к резервному серверу с использованием пользователя-репликатора:

Перезапустите службу, чтобы применить изменения:

Теперь на резервном сервере давайте остановим службу PostgreSQL:

Отредактируйте /etc/postgresql/12/main/postgresql.conf, чтобы настроить горячее резервирование:

Создать резервную копию текущего состояния главного сервера:

В команде pg_basebackup флаги означают следующее:

  • -h : имя хоста или IP-адрес главного сервера
  • -D : каталог данных
  • -U : пользователь, который будет использоваться в операции
  • -P : включает отчеты о ходе выполнения.
  • -v : включает подробный режим
  • -R : создает файл standby.signal и добавляет параметры подключения к postgresql.auto.conf

Наконец, давайте запустим службу PostgreSQL на резервном сервере:

Чтобы убедиться, что он работает, перейдите на главный сервер и выполните следующую команду:

Вы должны увидеть запись для резервного сервера. Как вы можете видеть в представленной строке, синхронизация данных асинхронная. Если вы хотите сделать его синхронным, перейдите в файл /etc/postgresql/12/main/postgresql.conf на главном сервере и убедитесь, что у вас есть следующие строки:

И перезапустите службу:

Теперь вы можете снова проверить таблицу pg_stat_replication и убедиться, что состояние sync_state резервного сервера должно стать синхронным, а не асинхронным:

Чтобы протестировать репликацию, теперь вы можете создать тестовую базу данных на главном сервере и проверить, реплицируется ли она на резервном сервере:

Вы должны иметь возможность видеть тестовую базу данных, созданную на главном сервере, на резервном сервере.

Резервные копии

Базы данных PostgreSQL следует регулярно создавать резервные копии. Различные подходы см. в Руководстве администратора PostgreSQL.

Ресурсы

Как упоминалось выше, отличным ресурсом является Руководство администратора PostgreSQL. Руководство также доступно в пакете postgresql-doc-12. Выполните в терминале следующее, чтобы установить пакет:

Для просмотра руководства введите file:///usr/share/doc/postgresql-doc-12/html/index.html в адресную строку браузера.

Общие сведения об SQL см. в книгах O’Reilly «Начало работы с SQL: практический подход для начинающих» Томаса Нильда в качестве отправной точки и в кратком справочнике по SQL в двух словах.

Помимо уже упомянутого файла postgresql.conf, PostgreSQL использует два других редактируемых вручную файла конфигурации, которые управляют аутентификацией клиента (их использование обсуждается в главе 20). По умолчанию все три файла конфигурации хранятся в каталоге данных кластера баз данных. Параметры, описанные в этом разделе, позволяют размещать файлы конфигурации в другом месте. (Это может облегчить администрирование. В частности, часто проще обеспечить правильное резервное копирование файлов конфигурации, когда они хранятся отдельно.)

Указывает каталог для хранения данных.Этот параметр можно задать только при запуске сервера.

Указывает основной файл конфигурации сервера (обычно называемый postgresql.conf ). Этот параметр можно задать только в командной строке postgres.

Указывает файл конфигурации для проверки подлинности на основе хоста (обычно называется pg_hba.conf ). Этот параметр можно задать только при запуске сервера.

Указывает файл конфигурации для сопоставления имен пользователей (обычно называется pg_ident.conf ). Этот параметр можно задать только при запуске сервера. См. также раздел 20.2.

Указывает имя дополнительного файла идентификатора процесса (PID), который сервер должен создать для использования программами администрирования сервера. Этот параметр можно задать только при запуске сервера.

При установке по умолчанию ни один из указанных выше параметров не задан явно. Вместо этого каталог данных указывается параметром командной строки -D или переменной среды PGDATA, а все файлы конфигурации находятся в каталоге данных.

Если вы хотите сохранить файлы конфигурации в другом месте, кроме каталога данных, параметр командной строки postgres -D или переменная среды PGDATA должны указывать на каталог, содержащий файлы конфигурации, а параметр data_directory должен быть установлен в postgresql.conf. (или в командной строке), чтобы показать, где на самом деле находится каталог данных. Обратите внимание, что data_directory переопределяет -D и PGDATA для расположения каталога данных, но не для расположения файлов конфигурации.

При желании вы можете указать имена и расположение файлов конфигурации по отдельности, используя параметры config_file , hba_file и/или ident_file . config_file можно указать только в командной строке postgres, но остальные можно установить в основном файле конфигурации. Если все три параметра плюс data_directory заданы явно, то нет необходимости указывать -D или PGDATA .

При установке любого из этих параметров относительный путь будет интерпретироваться относительно каталога, в котором запускается postgres.

Предыдущая Вверх Далее
19.1. Настройка параметров Главная 19.3. Соединения и аутентификация

Отправить исправление

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

Читайте также: