У мене встановлено кілька серверів PostgreSQL. Як відключити автоматичне завантаження для старшого сервера?


24

Я запускаю 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% моєї системної пам'яті. Як я можу це зробити?

Рекомендовані ресурси:

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

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

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

Я думаю, що у мене встановлено кілька серверів postgresql, як я можу ідентифікувати та видалити «зайві»?

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

Відповіді:


43

Щоб менше зламати, відредагуйте /etc/postgresql/9.1/main/start.confта замініть autoна manualабо disabled.


Дякую ch2500! Це рішення інтуїтивно зрозуміле і робить саме те, що мені потрібно.
BitPusher16

Я шукав такої відповіді кілька годин. ДЯКУЙТЕ безмежно.
Джонатан Ванаско,

10

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

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

service postgresql start 9.1

щоб змінити пошук версій.


Дякую ДерфК, це спрацювало. Я створив запропонований вами файл, вклав у нього хеш-баг і зробив його виконуваним. Коли я перезавантажився, 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.
Майкл Реннер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.