Вопрос: У меня установлено несколько серверов PostgreSQL. Как отключить автоматическую загрузку для более старого сервера?


Я запускаю Ubuntu 12.04 на Oracle VirtualBox. Несколько месяцев назад я установил сервер PostgreSQL версии 9.1 на свою машину. Совсем недавно я узнал, что сервер PostgreSQL 9.3 поддерживает типы данных JSON, поэтому я решил обновить.

Я обновился до 9.3, выполнив следующие инструкции:

https://wiki.postgresql.org/wiki/Apt

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.3 pgadmin3

Этот установленный сервер версии 9.3 на моей машине наряду с версией 9.1. Запуск pg_lsclusters после новой загрузки дает:

Ver Cluster Port Status Owner    Data directory               Log file
9.1 main    5433 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.3 main    5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log

Затем я выполнил следующее обслуживание после обновления: я экспортировал несколько таблиц с моего сервера 9.1 с помощью pg_dump и восстановил их на моем сервере 9.3. Затем я открыл свои файлы конфигурации для 9.1 и 9.3 на /etc/postgresql/$VERSION/main/postgresql.conf и поменял местами свои номера портов, чтобы мой клиент psql подключался к новому серверу по умолчанию.

Мой вопрос таков. Оба 9.1 и 9.3 запускаются при загрузке. Я хотел бы предотвратить 9.1 от автоматической загрузки, так как он занимает примерно 5% от моей системной памяти. Как я могу это сделать?

Рассматриваемые ресурсы:

Страница документа PostgreSQL при запуске сервера указывает мне на стандартный каталог init.d. Мой каталог init.d содержит скрипт postgresql, Похоже, этот скрипт может быть настроен для запуска только одной версии, но требуемое изменение для меня не очевидно.

http://www.postgresql.org/docs/9.1/interactive/server-start.html

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

Я думаю, что у меня установлено несколько серверов postgresql, как мне идентифицировать и удалять лишние?

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


22
2018-03-17 00:23


Источник




Ответы:


За меньшее количество взлома, отредактируйте /etc/postgresql/9.1/main/start.conf и заменить auto с manual или disabled,


36
2018-03-17 21:28



Спасибо ch2500! Это решение является интуитивным и делает именно то, что мне нужно. - BitPusher16
Я искал такой ответ в течение нескольких часов. СПАСИБО БОЛЬШЕ. - Jonathan Vanasco


Debian создал несколько сценариев (например, утилиты pg_ * cluster), чтобы упростить запуск нескольких версий или установок PostgreSQL на одном сервере, поэтому это не документировано на postgresql.org.

Я не уверен, что собственный PostgreSQL .deb пакет использует тот же механизм запуска, что и Debian, но глядя на пакет, который у меня есть, если вы создаете /etc/init.d/postgresql-9.1 (даже если это пустой файл), тогда /etc/init.d/postgresql предположим, что вы хотите управлять этой версией отдельно и не запускать ее по умолчанию. Вы все еще можете начать с

service postgresql start 9.1

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


10
2018-03-17 00:53



Благодаря DerfK это сработало. Я создал файл, который вы предложили, вложил в него хэш-сигнал и сделал его исполняемым. Когда я перезагрузился, pg_lsclusters дали: Ver Cluster Port Status Owner Data directory Log file  9.1 main 5433 down postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log  9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log - BitPusher16
Пакеты из группы упаковки PostgreSQL Debian идентичны пакетам Debian. Вы должны использовать инфраструктуру кластера pg_ * вместо того, чтобы взломать собственные скрипты запуска sysv init. - Michael Renner