Как проверить что postgresql запущен
Как проверить что postgresql запущен
pg_ctl — инициализировать, запустить, остановить или управлять сервером PostgreSQL
Синтаксис
pg_ctl kill имя_сигнала ид_процесса
В системах Microsoft Windows также:
Описание
pg_ctl — это утилита для начальной инициализации, запуска, остановки, повторного запуска и управления кластером баз данных PostgreSQL ( postgres ). Сервер можно стартовать в ручном режиме, но pg_ctl реализует задачи направления вывода в журнал и отсоединения от терминала и группы процессов, а также предоставляет удобный интерфейс остановки кластера.
Команда restart по сути производит остановку и последующий запуск сервера. Это позволяет изменить параметры командной строки postgres либо применить изменения в файле конфигурации, не вступающие в силу без перезапуска сервера. Если в командной строке при запуске сервера указывались относительные пути, команда restart может не выполниться, если вызвать pg_ctl не в том каталоге, где производился предыдущий запуск.
Команда promote указывает серверу, работающему в режиме резерва с указанным каталогом данных, выйти из этого режима и начать операции чтения/записи.
Параметры
Если ожидание отключено, запрошенное действие вызывается, но о его результате ничего не известно. В этом случае для проверки текущего состояния и результата операции потребуется обратиться к файлу журнала сервера или воспользоваться внешней системой мониторинга.
Вывести справку по команде pg_ctl и прервать выполнение.
Если некоторый параметр является допустимым, но не применим к выбранному режиму работы, pg_ctl игнорирует его.
Параметры, специфичные для Windows
Переменные окружения
Значение по умолчанию для максимального времени ожидания запуска или остановки сервера (в секундах). По умолчанию это время составляет 60 секунд. PGDATA
Размещение каталога хранения данных по умолчанию.
Файлы
Проверяя этот файл в каталоге данных, pg_ctl определяет, работает ли сервер в настоящий момент. postmaster.opts
Примеры
Запуск сервера
Запуск сервера и ожидание момента, когда он начнёт принимать подключения:
Остановка сервера
Чтобы остановить сервер, выполните:
Повторный запуск сервера
Перезапуск сервера почти равнозначен остановке и запуску сервера за исключением того, что по умолчанию pg_ctl сохраняет параметры командной строки, которые были переданы ранее запущенному экземпляру. Таким образом, чтобы перезапустить сервер с теми же параметрами, с какими он был запущен, выполните:
Вывод состояния сервера
Ниже представлен примерный вывод pg_ctl :
Во второй строке показывается команда, которая будет выполнена в режиме перезапуска.
14 команд для управления PostgreSQL
1. Как изменить root пароль в PostgreSQL?
Изменение пароля для обычного пользователя происходит таким же образом. Пользователь root может поменять пароль любому пользователю.
2. Как установить PostgreSQL в автозапуск?
3. Проверяем состояние сервера
4. Как запустить, остановить, перезапустить PostgreSQL?
5. Как посмотреть какая версия PostgreSQL запущена?
5. Как создать пользователя в PostgreSQL?
Для этого существуют два метода..
Метод 1: Создаем пользователя в через PSQL шелл, командой CREATE USER.
Метод 2: Создаем пользователя в через шелл команду createuser.
Для этого существует 2 метода.
Метод 1: Создаем базу черезе PSQL шелл, с помощью команды CREATE DATABASE.
Метод 2: Используем команду createdb.
7. Получаем список всех баз в Postgresql?
8. Как удалить базу в PostgreSQL?
9. Пользуемся встроенным хелпом к командам
Команда \? отобразит строку помощи для команда PSQL. \h CREATE покажет хелп для всех команд который начинаются с CREATE.
# \h CREATE
# \h CREATE INDEX
10. Как получить список всех таблиц в базе данный в Postgresql?
Для пустой базы вы получите сообщение “No relations found.”
11. Как узнать время выполнения запроса?
— после выполения данной команды каждый последующий запрос будет показывать время выполнения.
Для того чтобы получить список доступных функций, скажите \df+
13. Как отредактировать запрос к PostgreSQL в редакторе?
\e откроет редактор, в котором вы можете отредактировать запрос и сохранить его.
14. Где я могу найти файл истории postgreSQL?
/.bash_history, postgreSQL хранит все sql команды в файле
Как я могу проверить, установлен ли PostgreSQL или нет через скрипт Linux?
Я хочу проверить скрипт, установлен ли PostgreSQL или нет в Linux, и распечатать результат. Есть предложения, как сделать проверку?
9 ответов
если бы вы побежали which psql и Postgres не установлен, похоже, нет вывода. Вы просто получаете приглашение терминала, готовое принять другую команду:
но если Postgres установлен, вы получите ответ с путем к местоположению установки Postgres:
смотрим man which существует также вариант, который может помочь вам:
у меня есть postgres, установленные на моей машине, поэтому я запускаю следующее
что говорит мне, что команда вернула 0, указывая, что исполняемый файл Postgres был найден на моей машине.
если он основан на debian.
Обновлено использование «статус службы postgres». Попробуйте:
нет простого способа сделать это. Все, что вы можете сделать, это проверить с менеджером пакетов (rpm, dpkg) или зондировать некоторые вероятные места для файлов, которые вы хотите. Или вы можете попробовать подключиться к вероятному порту (5432) и посмотреть, получите ли вы ответ протокола PostgreSQL. Но ничего из этого не будет очень надежным. Возможно, вы захотите пересмотреть свои требования.
нет единого простого способа сделать это, потому что PostgreSQL может быть установлен и настроен по-разному:
подскажите пользователю и спросите их.
перейдите в каталог bin БД postgres, например /opt/postgresql/bin и запустить следующую команду :
и если все остальное не удается из этого большого выбора ответов, вы всегда можете использовать «найти», как это. Или вам может потребоваться использовать sudo
если вы пользователь, вам понадобится sudo priv, чтобы запустить его через все каталоги
Я запускаю его таким образом, из / base, чтобы найти весь путь, в котором находится элемент. Это вернет любые файлы или каталоги с «postgres» в нем.
вы мог бы сделать то же самое, глядя на pg_hba.conf или postgresql.conf файлы.
aptitude show postgresql | grep Version работал для меня
вы также можете зарегистрироваться /opt монтировать в следующем пути /opt/PostgresPlus/9.5AS/bin/
PostgreSQL в Linux: рецепты популярных действий и решения проблем
Оглавление
PostgreSQL, как сказано на её официальном сайте, это самая продвинутая в мире реляционная база данных с открытым исходным кодом.
Использование PostgreSQL
Как запустить службу PostgreSQL. Как управлять службой PostgreSQL
Запуск службы PostgreSQL:
Остановка службы PostgreSQL:
Добавление службы PostgreSQL в автозагрузку:
Удаление службы PostgreSQL из автозагрузки:
Для просмотра состояния процесса PostgreSQL:
Альтернативный вариант запуска службы для работы с определённой базой данных следующий:
Как узнать, какая версия PostgreSQL запущена
Версию запущенной PostgreSQL не всегда можно определить по установленным пакетам. Например, во время обновления PostgreSQL на некоторых дистрибутивах не заменяет предыдущую версию, а устанавливает новую в дополнении к имеющейся. Иногда у пользователя в корпоративной среде есть доступ через Navicat или phpPgAdmin, но нет доступа к консоли сервера, на котором работает база данных.
Для определения версии сервера выполните команду:
Для определения версии клиента:
Ещё один вариант определения версии PostgreSQL:
Если вам нужен только номер версии (например, для скрипта), то используйте следующую команду:
Хотя вместо postgres можно использовать postmaster, использование postgres предпочтительнее, поскольку postmaster это устаревший псевдоним для postgres.
Если вы предпочитаете вариант с SQL, то подключитесь к интерактивному терминалу:
Также вам может пригодиться один из следующих вариантов
Как инициализировать базу данных PostgreSQL
Остановите службу, если она запущена:
Директория /var/lib/postgres/ должна принадлежать пользователю postgres:
Смените пользователя на postgres:
Выполните инициализацию БД:
Если вы столкнулись с ошибкой:
То найдите расположение файла initdb:
И укажите до него полный путь в команде инициализации:
Нажмите CTRL+D
Запустите службу PostgreSQL:
Создайте нового пользователя (например, user):
При желании, вы можете установить пароль для пользователя, это делается командой с ключом -W:
Создайте базу данных (например, my-first-db):
Как подключиться к локальному серверу PostgreSQL
Для подключения к интерактивному терминалу PostgreSQL используется команда psql.
Примеры синтаксиса команд:
Для psql требуется указать имя пользователя и если он не указан, то пересылается имя текущего пользователя системы, который скорее всего отсутствует в базе данных PostgreSQL, что вызывает ошибку. По умолчанию создаётся пользователь postgres, поэтому без дополнительной настройке вы можете подключиться к серверу PostgreSQL следующим образом:
Какой конфигурационный файл использует PostgreSQL
Конфигурационный файл PostgreSQL носит имя postgresql.conf.
В системе может быть несколько конфигурационных файлов PostgreSQL. Вы можете найти их командой:
Что особенно важно, systemd может использовать свои собственные конфигурационные файлы, например:
Если вы настраиваете PostgreSQL, но после перезапуска службы с помощью systemd (systemctl) изменения не применяются, возможно, вы просто редактируете неверный файл.
Также конфигурационный файл имеется в директории с базой данных, например:
С пакетом PostgreSQL могут поставляться образцы конфигурационных файлов, например:
Как обновить базу данных PostgreSQL при переходе на новую версию
Сообщение при обновлении пакетов Linux:
Оно означает, что в системе 2 установленные версии PostgreSQL:
Если запустить службу PostgreSQL командой:
И проверить версию командой:
То будет выведено следующее:
То есть по умолчанию используется 13, устаревшая версия.
Удаление старых версий пакетов, например, командой:
ситуацию не меняет. Если вам нужно перенести базы данных из устаревшей версии в новую, то верните устаревшие пакеты, если вы успели их удалить.
Последующие действия подразумевают, что вы
1) установили новую версию PostgreSQL, но ещё не использовали её, то есть не сохраняли базы данных, поскольку файлы новой версии будут удалены.
2) хотите перенести старые база данных в новый формат
С помощью следующей команды просмотрите доступные кластеры:
На скриншоте только один из них online (я успел удалить пакет postgresql-13), но у вас оба должны быть online, иначе перенос базы данных не удастся.
Пример правильного вывода:
Как можно увидеть, обе версии 13 и 14 в настоящее время установлены и запущены. Держите в уме, что при переносе старой базы данных в новый формат вам понадобиться двойной объём места на диске, поскольку pg_upgradecluster копирует данные.
Процедура обновления включает в себя следующее:
1. Удаляем данные новой версии:
2. Запускаем процедуру обновления кластера:
3. Когда операция будет завершена, дважды проверьте, что всё работает
4. Удалите старую версию
Это показывает суть обновления кластера. Конечно, в конкретной вашей ситуации могут быть нюансы: другие номера версий, либо другое расположение файлов с базами данных.
Вновь проверяем версию:
Теперь используется 14, то есть самая последняя версия.
В чём разница между postgres и psql
postgres
Чтобы запустить сервер в однопользовательском режиме, используйте такую команду, как
Чтобы запустить postgres в фоновом режиме со значениями по умолчанию, введите:
Чтобы запустить postgres с определенным портом, например, 1234:
Чтобы подключиться к этому серверу с помощью psql, укажите этот порт с параметром -p:
или установите переменную окружения PGPORT:
psql
psql — это интерфейс для PostgreSQL на основе терминала. Он позволяет вам вводить запросы в интерактивном режиме, отправлять их в PostgreSQL и просматривать результаты запросов. В качестве альтернативы ввод может быть из файла или из аргументов командной строки. Кроме того, psql предоставляет ряд мета-команд и различных функций, подобных оболочке, для облегчения написания сценариев и автоматизации широкого спектра задач.
Пример запуска psql:
Запуск psql от пользователя postgres, который создаётся по умолчанию:
Ошибки PostgreSQL
psql: error: не удалось подключиться к серверу: Нет такого файла или каталога
При попытке подключиться к серверу PostgreSQL или выполнить запрос на сервере PostgreSQL, например:
вы можете столкнуться с ошибкой:
В англоязычной версии эта ошибка выглядит так:
Эта ошибка означает, что служба PostgreSQL не запущена, для её запуска выполните команду:
Альтернативный вариант запуска службы следующий:
Другой возможной причиной ошибки может быть то, что psql ищет файл сокета в неверной директории: например, файл сокета помещён в /tmp, а psql ищет его в /run/postgresql/. В этом случае вы можете с помощью опции —host явно указать директорию, в которой находится сокет:
FATAL: не удалось создать файл блокировки «/run/postgresql/.s.PGSQL.5432.lock»: Нет такого файла или каталога
При запуске системы БД, например, следующей командой:
Вы можете столкнуться с ошибкой:
В англоязычной версии ошибка выглядит так:
Причина ошибки в том, что не удалось создать файл блокировки в указанной директории. Путь директории может быть разным в различных дистрибутивах, например, /var/run/postgresql/ или как в сообщении выше /run/postgresql/. Вы можете разрешить проблему двумя способами:
Первый вариант — создаём директорию /run/postgresql/ и назначаем её владельцем пользователя postgres:
Второй вариант — открываем конфигурационный файл postgresql.conf (у вас может быть другое расположение)
И добавляем туда следующую запись:
sudo: postgres: command not found
Если при использовании postgres вы столкнулись с ошибкой:
то у этой проблемы может быть две возможных причины:
1. Не установлен пакет postgresql.
Установите его одной из следующих команд.
В Debian, Kali Linux, Linux Mint, Ubuntu и их производных:
В Arch Linux, Manjaro, BlackArch и их производных:
2. Исполнимый файл postgres находится за пределами $PATH
Это необязательно говорит о проблеме — такой подход может использоваться для возможности иметь на одном компьютере сразу несколько серверов PostgreSQL.
Найдите исполнимый файл
Как можно видеть на скриншоте, исполнимый файл присутствует для двух версий сервера:
Теперь вместо postgres используйте полный путь в команде запуска, например:
psql: ошибка: ВАЖНО: роль «» не существует
При попытке запуска интерактивного терминала PostgreSQL
Вы можете столкнуться с ошибкой:
Имя пользователя может быть другим — там будет показано имя того пользователя, котоырй пытается выполнить вход.
В англоязычной версии ошибка выглядит так:
Для psql необходимо имя пользователя и если оно не указано явно, то передаётся имя пользователя системы. Но поскольку данный пользователь не существует на сервере PostgreSQL, то возникает указанная выше ошибка.
Вы можете создать пользователя с любы именем, как это показано выше и ошибка исчезнет.
По умолчанию присутствует пользователь postgres, поэтому вы можете подключиться от его имени:
При запуске postgres вы можете столкнуться с ошибкой:
В англоязычной версии:
Суть ошибки в том, что необходимо указать конфигурационный файл в опции командной строки или в переменной окружения. Как вариант — можно указать путь до базы данных, содержащий конфигурационный файл. Например:
Конфигурационный файл называется postgresql.conf, но нужно указать не его, а директорию, в которой он содержится. Например:
initdb: command not found
Смотрите объяснение данной проблемы, а также дополнительные пути устранения в описании аналогичной ошибки: sudo: postgres: command not found
Найдите initdb с помощью:
И используйте в ваших командах абсолютный путь до файла initdb нужной вам версии, например:
Sysadminium
База знаний системного администратора
Текущие активности в PostgreSQL
Рассмотрим способы посмотреть текущие активности, другими словами процессы и их деятельность на сервере PostgreSQL.
Что в этой статье будет рассмотрено:
), посмотреть кого ожидает процесс с этим pid.
Все эти действия можно выполнить с помощью инструментов командной строки операционной системы:
Но операционная система не сможет определить чем занят процесс postgress, поэтому ps не будет столь-же информативен, как представление pg_stat_activity.
, главный процесс postgres может решить что в базе данных случилась ошибка и перезапустит весь кластер. Поэтому завершать процессы лучше средствами PostgreSQL, с помощью функции pg_terminate_backend(
Практика
Создадим таблицу и вставим в неё одно значение, равное 42:
Затем заблокируем эту таблицу выполняя в ней транзакцию:
Запустим второй сеанс и подключимся к той-же самой базе данных. Затем попробуем поменять значение в заблокированной таблице:
Второй сеанс при этом завис!
Запускаем третий сеанс, в котором будем разбираться кто кого заблокировал. Подключаемся к базе postgres и выполняем:
В запросе мы получали следующую информацию:
Состояние idle in transaction означает, что сеанс начал транзакцию, но в настоящее время ничего не делает, а транзакция осталась незавершенной. Это может стать проблемой, если ситуация возникает систематически, например, из-за некорректной реализации приложения или из-за ошибок в драйвере – поскольку открытый сеанс расходует оперативную память.
В конфигурации сервера есть параметр:
Теперь завершим зависший процесс вручную:
После этого второй терминал должен отвиснуть и запрос выполится:
Дальше посмотрим некоторую информацию по всем процессам (фоновым и обслуживающим) которые есть в этом представлении:
Сравним с выводом команды операционной системы ps:
Можно заметить, что в представлении pg_stat_activity нет процесса stats collector.