Ubuntu postgresql не запускается

Обновлено: 21.11.2024

Вероятно, большинство пользователей OS X знают о Homebrew , но Homebrew — это менеджер пакетов для OS X, который позволяет с легкостью устанавливать и запускать обширную библиотеку приложений и утилит.

Мы не будем проходить весь (хотя и короткий) процесс установки Homebrew, но если вы хотите установить Homebrew и использовать его для управления PostgreSQL, ознакомьтесь с командой установки в официальной документации. Если вы не уверены, установлен ли Homebrew, попробуйте ввести команду brew из терминала, чтобы проверить.

После установки Homebrew вы можете установить PostgreSQL, выполнив в терминале следующие команды:

Первые две команды используются для обновления Homebrew и сообщения о любых потенциальных проблемах (при необходимости). Затем, конечно, brew install postgres — это однострочная команда для установки PostgreSQL.

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

Использование LaunchAgent и plist для запуска PostgreSQL при запуске

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

Во-первых, вам нужно создать каталог для размещения ваших LaunchAgents (если каталог еще не существует). LaunchAgents в OS X — это простые сценарии, используемые launchd, которые заставляют систему запускать программы или код во время запуска.

При необходимости создайте пользовательский каталог LaunchAgents с помощью этой команды:

Теперь вам нужно создать символическую ссылку из скрипта, которая фактически позволяет запускать Postgres в каталог LaunchAgents. Символическая ссылка аналогична созданию новой копии файла для использования в другом каталоге, но, поскольку ссылка является «символической», ссылка является просто адресом пересылки: любой запрос, сделанный к этому местоположению символической ссылки, фактически «перенаправляется» или перенаправлены туда, где на самом деле находится настоящий файл.

Ссылка на файл plist (список свойств), созданный Homebrew, и поместите эту новую символическую ссылку в LaunchAgents с помощью этой команды:

Примечание. Дважды проверьте правильность команды: она должна была быть частью выходных данных установки, упомянутых выше, когда Homebrew изначально устанавливал Postgres.

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

Запуск PostgreSQL вручную

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

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

Запуск/остановка PostgreSQL без Homebrew

Если у вас нет (или вы не хотите использовать) Homebrew для Postgres, но у вас уже установлен Postgres, вы также можете вручную запустить его с помощью pg_ctl , утилиты запуска, предоставляемой самим Postgres. .

Это запустит Postgres (при условии, что каталоги установлены по умолчанию):

И это остановит Postgres:

Устранение неполадок при запуске: запускали ли вы initdb?

В некоторых случаях, если у вас возникли проблемы с запуском Postgres, убедитесь, что вы выполнили команду initdb один раз, что заставит Postgres инициализировать кластер базы данных для новой установки и позволит вам подключиться к пользователю postgres по умолчанию.< /p>

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

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

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

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

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

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

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

Обычно сервер базы данных нужно запускать при загрузке компьютера. Сценарии автозапуска зависят от операционной системы. Некоторые из них распространяются вместе с PostgreSQL в каталоге contrib/start-scripts. Для его установки потребуются привилегии root.

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

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

Для FreeBSD просмотрите файл contrib/start-scripts/freebsd в исходном дистрибутиве PostgreSQL.

В OpenBSD добавьте следующие строки в файл /etc/rc.local:

В системах Linux добавьте

в /etc/rc.d/rc.local или /etc/rc.local или посмотрите файл contrib/start-scripts/linux в исходном дистрибутиве PostgreSQL.

В NetBSD используйте сценарии запуска FreeBSD или Linux, в зависимости от предпочтений.

В Solaris создайте файл с именем /etc/init.d/postgresql, содержащий следующую строку:

Затем создайте символическую ссылку на него в /etc/rc3.d как S99postgresql.

17.3.1. Сбои при запуске сервера

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

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

вероятно, это означает, что ограничение вашего ядра на размер разделяемой памяти меньше, чем рабочая область, которую пытается создать PostgreSQL (4011376640 байт в этом примере). Или это может означать, что в вашем ядре вообще не настроена поддержка разделяемой памяти в стиле System-V. В качестве временного обходного пути вы можете попробовать запустить сервер с меньшим, чем обычно, количеством буферов (shared_buffers). Со временем вы захотите перенастроить ядро, чтобы увеличить разрешенный размер разделяемой памяти. Вы также можете увидеть это сообщение при попытке запустить несколько серверов на одном компьютере, если их общее запрашиваемое пространство превышает ограничение ядра.

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

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

17.3.2. Проблемы с подключением клиента

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

Это типичная ошибка "Я не могу найти сервер для связи". Это выглядит так, как показано выше, при попытке связи по протоколу TCP/IP. Распространенной ошибкой является забывание настроить сервер для разрешения подключений TCP/IP.

В качестве альтернативы вы получите это сообщение при попытке установить связь через сокет домена Unix с локальным сервером:

Последняя строка полезна для проверки того, что клиент пытается подключиться к нужному месту. Если на самом деле там не работает сервер, сообщение об ошибке ядра обычно будет либо «Отказано в подключении», либо «Нет такого файла или каталога», как показано на рисунке. (Важно понимать, что отказ в подключении в этом контексте не означает, что сервер получил ваш запрос на подключение и отклонил его. В этом случае будет выдано другое сообщение, как показано в разделе 19.4.) Другие сообщения об ошибках, такие как «Превышение времени ожидания подключения», могут указывать на более серьезные проблемы, например отсутствие сетевого подключения.

Всякий раз, когда мы говорим о работе с базами данных в любой операционной системе, всегда обсуждаются системы управления базами данных (СУБД). PostgreSQL также является СУБД, которая относится к категории систем управления реляционными базами данных, т. е. занимается управлением и работой с реляционными базами данных. Эта реляционная СУБД обеспечивает гибкость создания баз данных и управления ими, а также их установку в любой известной операционной системе, т. е. в Linux, macOS и Windows. Именно поэтому эта СУБД так известна многим программистам.

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

С момента запуска этой реляционной СУБД в далеком 1996 году она претерпела несколько обновлений, благодаря чему ее функциональность сравнима с любой из последних систем управления реляционными базами данных. Кроме того, эта СУБД также обеспечивает усовершенствование функций традиционных систем управления базами данных и полное соответствие SQL. Эта реляционная СУБД поддерживает широкий спектр собственных типов данных и некоторые пользовательские типы данных. В дополнение к этому, он также обрабатывает различные версии ваших баз данных, поддерживая их параллелизм чрезвычайно изящным образом.

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

Эта статья предназначена для того, чтобы научить вас процедуре установки сервера PostgreSQL в дистрибутиве Linux, например Ubuntu 20.04. Вы также можете использовать любую другую версию Linux по вашему выбору, если хотите. Однако описанный ниже метод отлично работает с системой Ubuntu 20.04.

Способ начала работы с PostgreSQL в Ubuntu 20.04:

Чтобы начать работу с PostgreSQL в системе Ubuntu 20.04, вам необходимо выполнить следующие шаги в указанном порядке:

Прежде чем устанавливать что-либо в любом дистрибутиве Linux, настоятельно рекомендуется обновить систему. Эта цель может быть достигнута с помощью команды, указанной ниже:

После того, как вышеупомянутая команда завершит свое выполнение, следующим шагом будет выполнение следующей команды в вашем терминале Ubuntu 20.04:

Эта команда установит PostgreSQL в нашу систему Ubuntu 20.04, что является обязательным для нас, т. е. мы не сможем запустить его, если он не установлен в нашей системе Ubuntu 20.04.

С помощью этой команды вы сможете очень удобно установить PostgreSQL в своей системе, и весь этот процесс займет несколько минут; однако он уже был установлен в нашей системе. Поэтому нам было представлено сообщение, показанное на изображении ниже, после того, как мы выполнили команду, упомянутую выше, в нашей системе Ubuntu 20.04:

Однако после того, как вы установите сервер PostgreSQL в свою систему Ubuntu 20.04 (если он еще не установлен), во время установки вас один раз попросят подтвердить ваши действия. Как только вы это сделаете, процесс установки сервера PostgreSQL продолжится в вашей системе Ubuntu 20.04 и завершится после успешной установки, поэтому на терминале отобразится сообщение об успешном завершении.

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

Вывод, представленный на изображении ниже, подтверждает, что PostgreSQL активен в нашей системе.Однако здесь следует отметить, что этот сервер сейчас не работает. Он будет работать только после того, как мы запустим этот сервер. Именно поэтому статус оказался «активен (закрыт)» вместо «активен (выполняется)».

После проверки состояния сервера PostgreSQL в нашей системе Ubuntu 20.04 мы получим доступ к этому серверу, чтобы запустить его, с помощью следующей команды:

Ваш сервер PostgreSQL сразу же начнет работать в вашей системе Ubuntu 20.04, как только будет выполнена эта команда. Вы можете убедиться в этом, взглянув на измененный путь в терминале вашей системы.

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

Вы можете увидеть консоль PostgreSQL на следующем изображении:

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

Дополнительный совет:

В качестве дополнительного совета мы хотели бы научить вас, как вернуться к обычному терминалу в Ubuntu 20.04. Для этого вам сначала нужно выйти из консоли PostgreSQL, после чего вам нужно будет выйти из сервера PostgreSQL. Это можно сделать, следуя двум приведенным ниже советам:

Для выхода из консоли сервера PostgreSQL необходимо ввести в этой консоли «\q» и нажать клавишу Enter, как показано на следующем рисунке:

После этого вы выйдете из консоли сервера PostgreSQL.

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

При выполнении этой команды вы успешно выйдете из сервера PostgreSQL.

Вывод:

Из этого руководства вы легко поймете, насколько просто запустить PostgreSQL в системе Linux. Мы использовали систему Ubuntu 20.04 для объяснения этого метода. Главное, что вам нужно, это установленный в вашей системе сервер PostgreSQL. Если вы установили его в своей системе и его статус активен, то запуск этого сервера в вашей системе занимает всего несколько секунд. Более того, в качестве дополнительной подсказки мы также научили вас, как выйти из консоли сервера PostgreSQL и как выйти из этого сервера.

Об авторе

Акса Ясин

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

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 в двух словах.

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