Как перезапустить postgresql в linux

Обновлено: 05.07.2024

Для систем на базе Linux Postgres Pro Standard поставляется в виде двоичных пакетов. Все двоичные дистрибутивы Postgres Pro состоят из нескольких пакетов. Структура пакетов отличается от структуры ванильного PostgreSQL и поддерживает следующие режимы установки:

Быстрая установка и настройка . Пакет postgrespro-std-10 устанавливает и настраивает все компоненты, необходимые для получения готовой к использованию конфигурации, как клиентских, так и серверных компонентов. Выберите этот вариант, если вы планируете установить только один экземпляр Postgres Pro и вас не беспокоят возможные конфликты с другими продуктами на базе PostgreSQL .

Важно

При установке пакета postgrespro-std-10 могут быть удалены существующие инсталляции продуктов на базе Postgres Pro и PostgreSQL . И напротив, установленный пакет Postgres Pro может быть автоматически удалён, если вы впоследствии развернёте другой продукт на базе PostgreSQL . Данный пакет не нужно устанавливать в процессе обновления или миграции, а также если вы планируете разворачивать в одной системе несколько инсталляций.

Расширенная установка . Вы можете выбрать любые пакеты, требующиеся для ваших целей, включая пакеты для разработчиков. Этот вариант требует ручной настройки, поэтому для него необходимо хорошо разбираться в Linux и понимать архитектуру PostgreSQL . Это единственно возможный вариант, если вы планируете реализовать один из следующих сценариев использования Postgres Pro :

Установка одновременно нескольких версий Postgres Pro либо установка вместе с другими продуктами на базе PostgreSQL.

Обновление с другой версии или миграция с другого продукта на базе PostgreSQL .

Минимальные системные требования для установки Postgres Pro , создания кластера баз данных и запуска сервера:

Процессор с частотой 1 ГГц

Для вспомогательных компонентов или данных потребуется дополнительное дисковое пространство.

16.1.1. Поддерживаемые дистрибутивы Linux

Двоичные пакеты Postgres Pro предоставляются для следующих систем на базе Linux:

Системы Red Hat Enterprise Linux (RHEL) и производные от них: CentOS 7/8, Red Hat Enterprise Linux 7/8, Oracle Linux 7/8, Rosa Enterprise Linux Server 7, РОСА «КОБАЛЬТ» (серверная редакция) на платформе РОСА 7, РЕД ОС 7 МУРОМ, Гослинукс 7, МСВСфера 6.3, AlterOS 7.5

Системы на базе Debian: Debian 8/9/10, Ubuntu 18.04/20.04/20.10/21.04, Astra Linux «Смоленск» 1.5/1.6/1.7, Astra Linux «Орёл» 2.12

Альт Линукс 8/9, Альт Линукс СПТ 7.0, Альт 8 СП

Примечание

Двоичные пакеты Postgres Pro используют библиотеку tzdata , предоставляемую операционной системой, поэтому важно, чтобы в системе была установлена последняя её версия. В случае использования устаревшей библиотеки tzdata значения времени в вашей базе данных могут быть некорректными.

16.1.2. Быстрая установка и настройка

Если вам нужно установить только один экземпляр Postgres Pro и вы не собираетесь использовать никакие другие продукты на базе PostgreSQL в вашей системе, вы можете использовать режим быстрой установки. Типичная процедура установки в этом случае выглядит так:

Примечание

По умолчанию конфигурация базы данных настраивается под устанавливаемый продукт Postgres Pro . Если вам нужна другая настройка сервера базы данных, выберите расширенную установку и воспользуйтесь аргументом tune команды pg-setup initdb .

После завершения установки вы можете запустить psql от имени пользователя postgres и подключиться к только что созданной базе данных, находящейся в каталоге данных /var/lib/pgpro/std-10/data .

Так как база данных по умолчанию создаётся скриптом pg-setup , путь к каталогу данных сохраняется в файле /etc/default/postgrespro-std-10 . Все последующие команды pg-setup , а также любые команды, управляющие службой Postgres Pro , будут нацелены именно на эту базу данных.

16.1.3. Расширенная установка

Разделение дистрибутива на несколько пакетов позволяет произвести инсталляцию по-разному для различных применений: для серверов баз данных, клиентских систем или рабочих станций разработчиков. Такие инсталляции необходимо настраивать вручную, но это даёт дополнительную гибкость при использовании продукта. Вы можете установить несколько версий Postgres Pro параллельно, а также вместе с другими продуктами PostgreSQL . В частности, это может потребоваться при осуществлении обновления или при миграции с другого продукта на базе PostgreSQL .

Для осуществления расширенной установки выполните следующие действия:

Выберите пакеты Postgres Pro , требующиеся для ваших целей, и установите их с помощью стандартных для вашего дистрибутива Linux команд. Доступные пакеты перечислены в Таблице 16.1.

В результате все файлы будут установлены в каталог /opt/pgpro/std-10 .

Запустите от имени root утилиту pg-wrapper , чтобы добавить и клиентские, и серверные установленные программы в путь поиска PATH , а также включить страницы man по SQL в файл конфигурации страниц man. Эта утилита входит в состав пакета postgrespro-std-10-client .

Подробнее о разрешении возможных конфликтов рассказывается в pg-wrapper .

Если вы устанавливаете пакет postgrespro-std-10-server , выполните следующую процедуру настройки сервера:

Создайте начальную базу данных, запустив вспомогательный скрипт pg-setup от имени root с ключом initdb :

Аргумент tune выбирает вариант конфигурации базы данных.

Примечание

По умолчанию pg-setup инициализирует кластер баз данных со включёнными контрольными суммами. Если для вас это нежелательно, укажите --no-data-checksums .

Скрипт pg-setup выполняет административные операции с базами данных от имени пользователя postgres . Если вы не укажете никакие параметры initdb , база по умолчанию создаётся в каталоге /var/lib/pgpro/std-10/data с параметрами локализации, определяемыми переменной окружения LANG текущего сеанса. Переменные окружения LC_* при этом игнорируются.

Так как база данных по умолчанию создаётся скриптом pg-setup , путь к каталогу данных сохраняется в файле /etc/default/postgrespro-std-10 . Все последующие команды pg-setup , а также любые команды, управляющие службой Postgres Pro , будут нацелены именно на эту базу данных.

Запустите сервер с помощью pg-setup от имени root следующим образом:

Как и сервер ванильного PostgreSQL , сервер Postgres Pro работает под именем пользователя postgres .

Примечание

По умолчанию автоматический запуск сервера отключён, чтобы вы могли вручную управлять восстановлением базы данных после перезагрузки системы. Однако вы можете настроить и автоматический запуск сервера Postgres Pro . За подробностями обратитесь к Подразделу 16.1.3.2.

16.1.3.1. Выбор устанавливаемых пакетов

В следующей таблице перечислены все имеющиеся пакеты Postgres Pro .

Таблица 16.1. Пакеты Postgres Pro

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

Важно

При установке пакета postgrespro-std-10 могут быть удалены существующие инсталляции продуктов на базе Postgres Pro и PostgreSQL . И напротив, установленный пакет Postgres Pro может быть автоматически удалён, если вы впоследствии развернёте другой продукт на базе PostgreSQL .

Заголовочные файлы и библиотеки для разработки клиентских приложений и серверных расширений.

Реализация языка Python 3 для программирования на стороне сервера.

Тестовые скрипты для сервера.

Кроме этого, имеются отдельные пакеты с несколькими дополнительными модулями, собранные специально для совместимости с Postgres Pro:

Кроме того, Postgres Pro предоставляет отдельные пакеты с отладочной информацией для некоторых операционных систем:

В системах на базе Debian это пакет postgrespro-std-10-dbg .

В системах на базе RHEL это пакет postgrespro-std-10-debuginfo .

Для серверных инсталляций требуются как минимум следующие пакеты:

Для использования дополнительных расширений Postgres Pro вы должны также установить пакет postgrespro-std-10-contrib . В системах на базе Debian пакет postgrespro-std-10-server зависит от пакета postgrespro-std-10-contrib , поэтому последний должен всегда устанавливаться вместе с сервером.

Для клиентских инсталляций обычно достаточно установить пакеты postgrespro-std-10-client и postgrespro-std-10-libs . Если вы используете независимые приложения и вам не нужны стандартные клиентские утилиты, такие как psql , вы можете установить только пакет postgrespro-std-10-libs .

Для рабочих станций разработчиков необходимый минимум составляют следующие пакеты:

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

16.1.3.2. Настройка автоматического запуска сервера

Если вы производите расширенную установку, автоматический запуск сервера по умолчанию отключается. После создания базы данных по умолчанию вы можете настроить автоматический запуск сервера при загрузке системы, используя имеющиеся в вашей операционной системе механизмы управления службами или сторонние средства обеспечения высокой степени доступности. Для облегчения этой задачи в пакете postgrespro-std-10-server поставляется скрипт pg-setup , помещаемый в каталог /opt/pgpro/std-10/bin .

Для настройки автозапуска сервера запустите скрипт pg-setup со следующими параметрами:

Если требуется, вы можете отключить автозапуск сервера, используя тот же скрипт:

Вы также можете использовать системные средства управления службами, непосредственно задействуя скрипты для систем инициализации SysV init.d и systemd , предоставляемые в пакете postgrespro-std-10-server . В зависимости от дистрибутива Linux Postgres Pro поддерживает следующие механизмы управления службами:

Для включения автоматического запуска сервера средствами systemd выполните следующую команду:

Для использования скрипта init.d в стиле SysV:

В системах ALT Linux выполните следующую команду:

16.1.4. Установка на рабочих станциях разработчиков

Хотя может быть достаточно установить пакеты postgrespro-std-10-libs и postgrespro-std-10-devel / postgrespro-std-10-dev , обычно на машинах разработчиков удобно иметь и установленный сервер. Для быстрой установки вы можете воспользоваться пакетом postgrespro-std-10 , который автоматически настроит предоставляемые клиентские и серверные программы, а также создаст начальную базу данных. Однако если вы планируете использовать одновременно несколько продуктов на базе PostgreSQL , следуйте инструкциям по расширенной установке, приведённым в Подразделе 16.1.3.

Чтобы скомпилировать программы с библиотеками Postgres Pro , используя утилиту pg_config , поставляемую с Postgres Pro , необходимо, чтобы её путь был указан в переменной PATH до путей каких-либо других версий pg_config . Заметьте, что в системах на базе RHEL pg_config не добавляется в PATH автоматически. Если в вашей системе нет других версий pg_config , вы можете воспользоваться утилитой pg-wrapper , поставляемой в пакете postgrespro-std-10-client , для создания символической ссылки на pg_config в стандартном каталоге исполняемых файлов.

Для компиляции программ с использованием pkg-config добавьте путь /opt/pgpro/std-10/lib/pkgconfig/ в переменную среды PKG_CONFIG_PATH .

16.1.4.1. Использование сторонних программ с Postgres Pro

Чтобы использовать сервер Postgres Pro с клиентской программой из стороннего продукта, вы можете установить версию библиотек PostgreSQL , с которыми компилировалась эта программа. Например, если программа поставляется в составе ванильного PostgreSQL , вам может потребоваться установить пакеты libpq или postgresql-libs , предоставляемые для вашего дистрибутива Linux. В этом случае программа, возможно, не будет использовать некоторые новые возможности сервера Postgres Pro , но скорее всего она и не поддерживает их.

Если вы предпочитаете использовать библиотеки Postgres Pro со сторонней программой или хотели бы задействовать новую возможность, которая не требует изменения самого клиентского приложения, например, проверку подлинности SCRAM , вы можете перекомпилировать вашу программу с библиотеками Postgres Pro .

Важно

Если программа скомпилирована с одной версией libpq , а используется с другой, её стабильная работа не гарантируется.

Если вы создаёте пакеты .rpm или .deb для вашей программы, рекомендуется сделать следующее:

Добавьте путь /opt/pgpro/std-10/bin в переменную PATH в сборочных скриптах (в файле .spec или debian/rules ).

Тем самым вы обеспечите вызов в процессе создания пакетов нужной версии pg_config при каждой пересборке пакета исходного кода.

16.1.5. Настройка нескольких экземпляров Postgres Pro

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

Установите и настройте Postgres Pro , следуя указаниям в Подразделе 16.1.2 или Подразделе 16.1.3.

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

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

Если требуется, настройте автоматический запуск сервера следующим образом:

Создайте копию файла /etc/init.d/postgrespro-std-10 или /lib/systemd/system/postgrespro-std-10.service с другим именем и поменяйте в ней путь к каталогу данных.

16.1.6. Замечания о совместимости с антивирусами

Настоятельно не рекомендуется использовать антивирусное ПО в системах, где работает Postgres Pro , так как антивирус создаёт дополнительную нагрузку и может оказывать непредсказуемое влияние на работу базы данных, что чревато проблемами с производительностью и надёжностью. Если вам необходимо использовать антивирусное ПО, обязательно добавьте в исключения антивируса следующие каталоги, так как они не содержат исполняемых файлов:

Каталог PGDATA с основными данными кластера (обычно /var/lib/pgpro/std-10/data или другой каталог, заданный в параметрах initdb )

I installed PostgreSQL 10.1 under a CentOS 7.3 environment.

The service is started ( postmaster.pid file present under /var/lib/pgsql/10/data ), but I need to reload configuration or restart the server following a change in pg_hba.conf .

However, trying different commands, I get the following:


1,471 3 3 gold badges 13 13 silver badges 26 26 bronze badges

6 Answers 6

I found out that you need to specify the exact name for the PostgreSQL service, which you can find under the list of services, using systemctl (also see this post):

Then you can use service :

Alternatively, you can use the systemctl command:


1,471 3 3 gold badges 13 13 silver badges 26 26 bronze badges

If you have sudogoer as a role in postgresql, you can alternatively use:


Or first (one-time):

and then (every time):

Note: pg_ctl cannot be run as root.


I don't know how your service file is set up so I can't debug your systemd command. It's possible that it's named something different as Sebastien suggests.

As for pg_ctl, that is a result of the installation not adding the directory to the path. (There are reasons for this mentioned in the comments here). There are a few different ways to solve but I recommend just adding /usr/pgsql-x.x/bin to the path of the postgres user. Just add PATH=$PATH:/usr/pgsql-x.x/bin to the postgres user's .bash_profile and you should be good to go.

You may also use (PostgresSQL 11 running on MX Linux (Debian 9, Stretch))-


Make sure /sbin is part of your path if running the service and systemctl commands.

pg_ctl — инициализировать, запустить, остановить или управлять сервером PostgreSQL

Синтаксис

pg_ctl init[db] [ -D каталог_данных ] [ -s ] [ -o параметры-initdb ]

pg_ctl start [ -D каталог_данных ] [ -l имя_файла ] [ -W ] [ -t секунды ] [ -s ] [ -o параметры ] [ -p путь ] [ -c ]

pg_ctl stop [ -D каталог_данных ] [ -m s[mart] | f[ast] | i[mmediate] ] [ -W ] [ -t секунды ] [ -s ]

pg_ctl restart [ -D каталог_данных ] [ -m s[mart] | f[ast] | i[mmediate] ] [ -W ] [ -t секунды ] [ -s ] [ -o параметры ] [ -c ]

pg_ctl reload [ -D каталог_данных ] [ -s ]

pg_ctl status [ -D каталог_данных ]

pg_ctl promote [ -D каталог_данных ] [ -W ] [ -t секунды ] [ -s ]

pg_ctl kill имя_сигнала ид_процесса

В системах Microsoft Windows также:

pg_ctl register [ -D каталог_данных ] [ -N имя_службы ] [ -U имя_пользователя ] [ -P пароль ] [ -S a[uto] | d[emand] ] [ -e source ] [ -W ] [ -t секунды ] [ -s ] [ -o параметры ]

pg_ctl unregister [ -N имя_службы ]

Описание

pg_ctl — это утилита для начальной инициализации, запуска, остановки, повторного запуска и управления кластером баз данных PostgreSQL ( postgres ). Сервер можно стартовать в ручном режиме, но pg_ctl реализует задачи направления вывода в журнал и отсоединения от терминала и группы процессов, а также предоставляет удобный интерфейс остановки кластера.

Команда init ( initdb ) создаёт кластер баз данных PostgreSQL , то есть коллекцию баз данных, которой будет управлять один экземпляр сервера. Эта команда вызывает программу initdb . За подробностями обратитесь к initdb .

Команда stop останавливает сервер, работающий с указанным каталогом данных. Параметр -m позволяет выбрать один из трёх режимов остановки. Режим « Smart » запрещает новые подключения, а затем ожидает отключения всех существующих клиентов и завершения всех текущих процессов резервного копирования. Если сервер работает в режиме горячего резерва, восстановление и потоковая репликация будут прерваны, как только отключатся все клиенты. Режим « Fast » (выбираемый по умолчанию) не ожидает отключения клиентов и завершает все текущие процессы резервного копирования. Все активные транзакции откатываются, а клиенты принудительно отключаются, после чего сервер останавливается. Режим « Immediate » незамедлительно прерывает все серверные процессы, не выполняя процедуру штатной остановки. Этот вариант влечёт необходимость выполнить восстановление после сбоя при следующем запуске сервера.

Команда restart по сути производит остановку и последующий запуск сервера. Это позволяет изменить параметры командной строки postgres либо применить изменения в файле конфигурации, не вступающие в силу без перезапуска сервера. Если в командной строке при запуске сервера указывались относительные пути, команда restart может не выполниться, если вызвать pg_ctl не в том каталоге, где производился предыдущий запуск.

Команда reload просто посылает процессу сервера postgres сигнал SIGHUP , получив который он перечитывает свои файлы конфигурации ( postgresql.conf , pg_hba.conf и т. д.). Это позволяет применить изменения параметров в файле конфигурации, не требующие полного перезапуска сервера.

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

Команда kill передаёт сигнал заданному процессу. Прежде все это полезно в Microsoft Windows , где отсутствует встроенная команда kill . Для получения списка имён поддерживаемых сигналов воспользуйтесь ключом --help .

Команда register регистрирует сервер PostgreSQL в качестве системной службы в Microsoft Windows . Параметр -S позволяет выбрать тип запуска службы: « auto » (запускать службу автоматически при загрузке системы) или « demand » (запускать службу по требованию).

Режим unregister разрегистрирует системную службу в Microsoft Windows . Эта операция отменяет действие команды register .

Параметры

Способствует сбросу дампа памяти процесса при крахе сервера на платформах, где это возможно, поднимая мягкие ограничения, задаваемые для файлов дампа. Это полезно при отладке и диагностике проблем, так как позволяет получить трассировку стека отказавшего процесса сервера. -D каталог_данных
--pgdata= каталог_данных

Указывает размещение конфигурационных файлов кластера. Если этот ключ опущен, используется значение переменной окружения PGDATA . -l имя_файла
--log= имя_файла

Задаёт режим остановки кластера. Значением режим может быть smart , fast или immediate , либо первая буква этих вариантов. Если этот ключ опущен, по умолчанию выбирается режим fast . -o параметры
--options= параметры

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

Задаваемые параметры обычно следует обрамлять одинарными или двойными кавычками, чтобы они передавались одной группой. -o параметры-initdb
--options= параметры-initdb

Указывает параметры, которые будут передаваться непосредственно программе initdb . Ключ -o можно указывать несколько раз, при этом ей будут переданы параметры из всех ключей.

Задаваемые параметры-initdb обычно следует обрамлять одинарными или двойными кавычками, чтобы они передавались вместе одной группой. -p путь

В режиме init этот параметр аналогичным образом задаёт размещение исполняемого файла initdb . -s
--silent

Задаёт максимальное время (в секундах) ожидания завершения операции (см. параметр -w ). По умолчанию действует значение переменной среды PGCTLTIMEOUT или, если оно не задано, 60 секунд. -V
--version

Выводит версию pg_ctl и прерывает выполнение. -w
--wait

Ждать завершения операции. Этот режим поддерживается (и действует по умолчанию) для команд start , stop , restart , promote и register .

Если операция не заканчивается за отведённое время (см. параметр -t ), программа pg_ctl завершается с ненулевым кодом выхода. Но заметьте, что при этом выполнение операции может продолжиться и в конце концов увенчаться успехом. -W
--no-wait

Не ждать завершения операции. Этот режим противоположен режиму -w .

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

В предыдущих выпусках PostgreSQL этот режим действовал по умолчанию (кроме команды stop ). -?
--help

Вывести справку по команде pg_ctl и прервать выполнение.

Если некоторый параметр является допустимым, но не применим к выбранному режиму работы, pg_ctl игнорирует его.

Параметры, специфичные для Windows

Имя регистрируемой системной службы. Оно станет и собственно именем службы, и отображаемым именем. По умолчанию — PostgreSQL . -P пароль

Пароль для пользователя, запускающего службу. -S тип-запуска

Тип запуска системной службы. В качестве значения тип-запуска можно задать auto , demand или первую букву этих слов. По умолчанию выбирается тип auto . -U имя_пользователя

Имя пользователя, от имени которого будут запущена служба. Для доменных пользователей используйте формат DOMAIN\username .

Переменные окружения

Значение по умолчанию для максимального времени ожидания запуска или остановки сервера (в секундах). По умолчанию это время составляет 60 секунд. PGDATA

Размещение каталога хранения данных по умолчанию.

Для большинства режимов pg_ctl требуется знать расположение каталога данных; поэтому если не задана переменная PGDATA , параметр -D является обязательным.

pg_ctl , как и большинство других утилит PostgreSQL , также использует переменные окружения, поддерживаемые libpq (см. Раздел 33.14).

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

Файлы

Проверяя этот файл в каталоге данных, pg_ctl определяет, работает ли сервер в настоящий момент. postmaster.opts

Если файл существует в каталоге хранения данных, то pg_ctl (при restart ) передаст его содержимое в качестве аргументов postgres , если не указаны иные значения в -o . Содержимое файла также отображается при вызове в режиме status .

Примеры

Запуск сервера

Запуск сервера и ожидание момента, когда он начнёт принимать подключения:

Чтобы запустить сервер с использованием порта 5433 и без fsync , выполните:

Остановка сервера

Чтобы остановить сервер, выполните:

Ключ -m позволяет управлять тем, как сервер будет остановлен:

Повторный запуск сервера

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

Но если добавляется ключ -o , он заменяет все предыдущие параметры. Эта команда осуществит перезапуск с использованием порта 5433 и без fsync :

Вывод состояния сервера

Ниже представлен примерный вывод pg_ctl :

Во второй строке показывается команда, которая будет выполнена в режиме перезапуска.

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