Полностью сбросить PostgreSQL по умолчанию?

16

Вопрос

Есть ли способ полностью сбросить установку PostgreSQL в Linux, чтобы она была в том же состоянии, что и при установке?

идея

Я рассмотрел

rm -rf /var/lib/pgsql/*
rm -rf /var/lib/pgsql/backups/*
rm -rf /var/lib/pgsql/data/*

но, возможно, это не рекомендуемый метод.

Цель

Это было бы удобно, чтобы избавиться от остатков от предыдущих программ, которые использовали его.

Жасмин Логн
источник
Возможный дубликат serverfault.com/q/233234/69930 .
Полузащитник

Ответы:

4

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

Как только это будет сделано, перезапустите базу данных:

sudo -U pgsql initdb
Дженни Д
источник
1
Нет, пожалуйста, не надо. По крайней мере, в Ubuntu это вызовет ужасный беспорядок, потому что он ожидает, что вы будете использовать свои собственные инструменты-оболочки.
Крейг Рингер
1
Оно делает? Ну, есть еще одна причина, чтобы использовать какую-то другую систему, тогда ... Лично я бы голосовал за FreeBSD, но каждая за свою.
Дженни Д
@Craig: какой беспорядок это создаст? Я только что использовал этот метод в Ubuntu, и мне кажется, что это нормально . Не могли бы вы добавить некоторые детали в свой ответ?
Полузащитник
1
@halfer Начать с postgresql.conf и pg_hba.conf будет не так, как ожидают сценарии ububtu. Или они проигнорируют созданные initdb и продолжат использовать старые.
Крейг Рингер
Что если это удаленная база данных, к которой мы подключены, а не та, которую мы инициализировали локально?
anon58192932
24

Все зависит от того, как оно было установлено.

Ubuntu, из пакетов (встроенный или apt.postgresql.org)

Использование pg_wrapper. Смотрите документацию по Ubuntu для PostgreSQL . Вы хотите, чтобы pg_dropclusterвсе существующие кластеры Pg, а затем pg_createclusterчистый новый.

Вы не просто удалить реж данных и повторного initdb.

CentOS / RH / Fedora, встроенные пакеты

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

Пакеты CentOS / RH / Fedora, yum.postgresql.org

См /usr/share/doc/postgresql??-?.?.?/README.rpm-dist.

Остановите сервер с помощью команды systemctlили команды servicewrapper, удалите каталог данных, затем запустите /usr/pgsql-9.3/bin/postgresql93-setup initdb(корректируя пути в соответствии с вашей версией).

Любой дистрибутив, от установщика EDB

Остановите сервер, удалите каталог данных и initdbновый кластер. Смотрите документацию по установке.

Из источника

Остановите сервер, удалите данные dir, повторно запустите initdb.

OS X

Homebrew: brew uninstall postgresql; brew cleanup; brew install postgresql

Postgres.app? Установщик EDB? MacPorts?

Найди пиво. Пей пиво. Повторение. Если это не заставит боль уйти, возьми что-нибудь сильнее.

Windows

  • Остановить сервис
  • Удалить каталог данных
  • перезапустите initdb, используя runas.exeв качестве пользователя postgres (pre-9.2) или NETWORKSERVICE(9.2+). Или просто поменяйте владельца потом.
Крейг Рингер
источник
1
Для OS X, удаление brew и очистка не затрагивают мои данные dir /usr/local/var/postgresql@9.5. (он удаляет приложение в /usr/local/opt/postgresql@9.5, обратите внимание на «opt», а не «var») «rm -rf /usr/local/var/postgresql@9.5» был необходим перед переустановкой.
Кертис Яллоп
4

Не лучше ли просто удалить и переустановить?

Таким образом, вы получите последнюю версию и обновите все зависимости по пути.

Запустите: sudo apt-get --purge удалить postgresql

Затем: sudo apt-get установить postgresql

я-CONICA
источник
1
Это не удаляло существующих пользователей БД + (по состоянию на Postgres 9.5)
Себастьян Вагнер,