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

Кажется, у меня есть несколько установок postgresql на моей машине. Я не уверен, является ли это ошибкой или, если Ubuntu по какой-то странной причине дублирует директории и хранит их в другом месте. У меня есть каталог postgresql в /etc

один в /usr/lib

и один в / опт

Я правильно запутался в этой точке. Как мне удалить лишние. Какие из них лишние? Я также должен убедиться, что мой драгоценный камень 'pg' в моей среде rails указывает на правильный сервер posgresql db.
Любые мысли по моей проблеме были бы огромными.

2 ответа

Решение

Может быть некоторая путаница по поводу того, что люди подразумевают под закапыванием. /etc/postgresql/ папка является папкой конфигурации для ваших кластеров. /var/lib/postgresql/ папка для данных. Двоичные файлы программы для каждой версии находятся в отдельных папках, обычно в /usr/lib/postgresql/, Я действительно не знаю о /opt/postgresql поскольку у меня нет этого на моем. Но /opt для "необязательных" двоичных файлов, поэтому возможно, что ваша установка здесь вместо/usr/lib/postgresql/,

Короче говоря, я думаю, что у вас может быть только одна установка, которая имеет файлы в нескольких местах.

Если вы хотите посмотреть, что вы установили, это может помочь:

Как устроен postgresql:

Чтобы сделать вещи немного понятнее, postgres имеет следующую структуру:

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

  • Под каждой версией будет много кластеров. Вы можете представить кластер как работающий сервер prostgres (процесс). Каждый кластер должен иметь свой собственный файл порта / сокета для подключения клиентов. Каждый кластер будет управляться одной версией.

  • Внутри каждого кластера будет несколько баз данных. Когда клиент подключается, он выбирает БД для подключения. Он может запросить изменение базы данных, к которой он подключен, без открытия нового сеанса, но он может быть подключен только к одному.

Что у вас установлено?

Чтобы узнать, какие версии установлены, вы можете посмотреть на dpkg а также apt, Вы должны иметь возможность удалять версии, используя apt а также dpkg, но будьте очень осторожны, чтобы не сделать это, прежде чем вы проверите, какие кластеры находятся под каждой версией.

Чтобы узнать, какие кластеры у вас есть, используйте команду pg_lsclusters, Когда я называю это, я получаю следующее, вы получите что-то другое:

Version Cluster   Port Status Owner    Data directory                     Log file
9.1     main      5432 online <unknown> /var/lib/postgres/data/9.1/main        /var/log/postgresql/postgresql-9.1-main.log

Обратите особое внимание на столбец "Статус". Если кластер не подключен к сети, то это просто данные на диске и ничего не делает. Если он в сети, то он работает.

Как вы объединяете кластеры?

Вы можете скопировать контент из одного кластера в другой, используя pg_dumpall Команда для создания резервной копии и использования psql импортировать его в кластер, который вы хотите сохранить. Стоит сохранить резервные копии всего, прежде чем начать.

Как удалить кластер, который больше не используется?

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

  • использование pg_ctlcluster <version> <cluster> stop остановить кластер.

  • Удалите папку данных и, необязательно, файл журнала.

  • Наконец удалите данные и конфиг. Папка данных должна быть /var/lib/postgres/data/<version>/<cluster> но проверьте вывод pg_lsclusters чтобы быть уверенным в этом. Конфигурация для кластера: все кластеры будут иметь свою собственную папку конфигурации в
    /etc/postgresql/<version>/<cluser>/,

Почему вы получили несколько кластеров, если вы никогда не просили их?

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

Вы можете использовать dpkg -S, чтобы увидеть, какому пакету принадлежит данный каталог. Это позволило бы вам увидеть, принадлежат ли каталоги различным пакетам.

Другие вопросы по тегам