×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

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

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

3.3.3. Запуск сервера баз данных

3.3.3.1. Ошибки запуска сервера
3.3.3.2. Проблемы с клиентскими подключениями

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

В случае использования пакетной версии Digital Q.DataBase, в ней предусмотрены средства для запуска сервера в качестве фоновой задачи в соответствии с соглашениями используемой операционной системы. Использование инфраструктуры пакета для запуска сервера потребует значительно меньше усилий, чем самостоятельная реализация данного процесса. Для получения подробных сведений рекомендуется обратиться к документации соответствующего пакета.

Минимальный способ запустить сервер вручную заключается в вызове postgres напрямую с указанием расположения каталога данных через ключ -D , например:

$ postgres -D /usr/local/pgsql/data

в результате чего сервер останется запущенным в интерактивном режиме. Данное действие должно выполняться из-под Digital Q.DataBase учетной записи пользователя. Без указания ключа -Dсервер попытается использовать каталог данных, определенный переменной окружения PGDATA. Если данная переменная также не задана, запуск завершится ошибкой.

Как правило, предпочтительнее запускать postgres в фоновом режиме. Для этого следует использовать стандартный синтаксис оболочки Unix:

$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &

Важно сохранять стандартный вывод stdout и вывод ошибок stderr сервера, как продемонстрировано выше. Это необходимо для целей аудита и диагностики проблем. (См. Раздел 3.9.3 для более подробного обсуждения обработки файлов журналов.)

Программа postgres также принимает ряд других параметров командной строки. Для получения дополнительной информации см. postgres страницу справочного руководства и Глава 3.4 ниже.

Использование такого синтаксиса оболочки может быть неудобным. Поэтому для упрощения некоторых задач предусмотрена вспомогательная программа pg_ctl . Например:

pg_ctl start -l logfile

запустит сервер в фоновом режиме и направит вывод в указанный файл журнала. Параметр -D имеет здесь то же значение, что и для postgres. pg_ctl также позволяет выполнять остановку сервера.

Как правило, сервер баз данных рекомендуется запускать при загрузке операционной системы. Скрипты автозапуска зависят от конкретной операционной системы. Несколько примеров скриптов поставляется вместе с Digital Q.DataBase в директории contrib/start-scripts директории. Для установки потребуются привилегии root.

В различных системах приняты разные соглашения по запуску демонов при загрузке системы. Во многих системах имеется файл /etc/rc.local или /etc/rc.d/rc.local. В других используются init.d или rc.d директории. Независимо от способа, сервер должен запускаться от имени Digital Q.DataBase учетной записи пользователя , а не от имени root или любого другого пользователя. Поэтому команды рекомендуется формировать с использованием su postgres -c '...'. Например:

su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'

Во время работы сервера его PID хранится в файле postmaster.pid в каталоге данных. Данный файл используется для предотвращения запуска нескольких экземпляров сервера в одном и том же каталоге данных, а также может применяться для остановки сервера.

3.3.3.1. Ошибки запуска сервера #

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

LOG:  не удалось привязать IPv4-адрес "127.0.0.1": Адрес уже используется
HINT:  Возможно, другой процесс postmaster уже запущен на порту 5432? Если нет, подождите несколько секунд и повторите попытку.
FATAL:  не удалось создать сокеты TCP/IP

Обычно это означает именно то, о чем говорится в сообщении: была предпринята попытка запустить другой сервер на том же порту, который уже занят. Однако если сообщение об ошибке от ядра отличается от Адрес уже используется или другие подобные варианты; возможно, возникла иная проблема. Например, при попытке запустить сервер на зарезервированном номере порта может быть выведено следующее:

$ postgres -p 666
LOG:  could not bind IPv4 address "127.0.0.1": Permission denied
HINT:  Is another postmaster already running on port 666? Если нет, подождите несколько секунд и повторите попытку.
FATAL:  не удалось создать сокеты TCP/IP

Сообщение следующего вида:

FATAL:  could not create shared memory segment: Invalid argument
DETAIL:  Failed system call was shmget(key=5440001, size=4011376640, 03600).

скорее всего, означает, что установленное в ядре ограничение на размер разделяемой памяти меньше рабочей области, Digital Q.DataBase которую пытается создать сервер (4011376640 байт в данном примере). Подобная ситуация вероятна только при использовании значения shared_memory_type в sysv. В этом случае можно попытаться запустить сервер с меньшим числом буферов (shared_buffers), либо следует изменить конфигурацию ядра для увеличения допустимого размера разделяемой памяти. Данное сообщение может также возникать при попытке запуска нескольких серверов на одной машине, если общий объем запрошенной ими памяти превышает системные ограничения ядра.

Ошибка вида:

FATAL:  could not create semaphores: No space left on device
DETAIL:  Failed system call was semget(5440126, 17, 03600).

не означает, может означать, что на диске закончилось свободное пространство. Это означает, что установленные в ядре системные ограничения на количество System V семафоров меньше того количества, которое Digital Q.DataBase система пытается создать. Как и в предыдущем случае, проблему можно решить путем запуска сервера с уменьшенным количеством разрешенных соединений (max_connections), однако в конечном итоге рекомендуется увеличить системные ограничения ядра.

Подробные сведения о настройке средств System V IPC приведены в Раздел 3.3.4.1.

3.3.3.2. Проблемы с клиентскими подключениями #

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

psql: error: connection to server at "server.joe.com" (123.123.123.123), port 5432 failed: Connection refused
        Запущен ли сервер на этом хосте и принимает ли он соединения TCP/IP?

Это типовая ошибка «не удалось найти сервер для взаимодействия» сбой. Вышеуказанная ошибка возникает при попытке установить соединение по протоколу TCP/IP. Распространенной ошибкой является отсутствие настройки сервера для разрешения соединений TCP/IP.

Кроме того, данное сообщение может появиться при попытке установить соединение через Unix-сокет с локальным сервером:

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
        Запущен ли сервер локально и принимает ли он соединения через этот сокет?

Если сервер действительно запущен, следует проверить, совпадает ли путь к сокету, используемый клиентом (в данном случае /tmp), с соответствующей настройкой unix_socket_directories сервера.

Сообщение об ошибке подключения всегда содержит адрес сервера или путь к сокету; это позволяет подтвердить, что клиент пытается подключиться к корректному узлу. Если сервер фактически не принимает соединения по указанному адресу, сообщение об ошибке ядра обычно имеет вид Connection refused или No such file or directory, как показано в примере. (Важно понимать, что ошибка Connection refused в данном контексте не означает, означает, что сервер получил запрос на соединение и отклонил его. В этой ситуации будет выведено другое сообщение, как показано в Раздел 3.5.15.) Другие сообщения об ошибках, такие как Connection timed out могут указывать на более глубокие проблемы, такие как отсутствие сетевого соединения или блокировка подключения брандмауэром.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению