Назад | Перейти на главную страницу

У меня установлено несколько серверов 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 при загрузке?

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

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

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

service postgresql start 9.1

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