Redefinir completamente o PostgreSQL para o padrão?

16

Questão

Existe uma maneira de redefinir completamente uma instalação do PostgreSQL no Linux, para que ela esteja no mesmo estado em que eu a instalei?

Idéia

Eu considerei

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

mas talvez esse não seja um método recomendado.

Objetivo

Isso seria útil para se livrar das sobras de programas anteriores que o usaram.

Jasmine Lognnes
fonte
Possível duplicata de serverfault.com/q/233234/69930 .
Halfer

Respostas:

4

Isso deve fazê-lo - apenas certifique-se primeiro de que a atual configuração realmente faz armazenar os arquivos nesses diretórios.

Uma vez feito, reinicie o banco de dados:

sudo -U pgsql initdb
Jenny D
fonte
11
Não, por favor não. No Ubuntu, pelo menos, isso causará uma confusão hedionda, pois espera que você use suas próprias ferramentas de wrapper.
Craig Ringer
11
Faz? Bem, há mais uma razão para usar outro sistema, então ... Pessoalmente, votaria no FreeBSD, mas cada um por conta própria.
111114 Jenny D
@ Craig: que tipo de bagunça ele criaria? Acabei de usar esse método no Ubuntu, e parece bom para mim . Você adicionaria alguns detalhes à sua resposta?
Halfer
11
@halfer Para começar com postgresql.conf e pg_hba.conf, não estará onde os scripts do ububtu esperam. Ou eles ignoram os que o initdb criou e continuam usando os antigos.
Craig Ringer
e se esse for um banco de dados remoto ao qual nos conectamos e não um inicializado localmente?
Anon58192932
24

Tudo depende de como foi instalado.

Ubuntu, a partir de pacotes (embutido ou apt.postgresql.org)

Use pg_wrapper. Veja os documentos do Ubuntu para PostgreSQL . Você deseja pg_dropclustertodos os clusters de Pg existentes e depois pg_createclusterum novo limpo.

Você não apenas apagar o dir de dados e re-initdb.

CentOS / RH / Fedora, pacotes embutidos

Não tenho isso instalado e não posso testar facilmente no momento. A partir da memória, acho seguro parar o servidor e excluir o diretório de dados.

Pacotes do CentOS / RH / Fedora, yum.postgresql.org

Veja /usr/share/doc/postgresql??-?.?.?/README.rpm-dist.

Pare o servidor com systemctlo servicecomando wrapper, exclua o diretório de dados e execute /usr/pgsql-9.3/bin/postgresql93-setup initdb(ajustando os caminhos conforme apropriado para sua versão).

Qualquer distro, do instalador do EDB

Pare o servidor, exclua o diretório de dados e initdbum novo cluster. Veja os documentos do instalador.

De origem

Pare o servidor, exclua o diretório de dados, re-initdb.

OS X

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

Postgres.app? Instalador do EDB? MacPorts?

Encontre uma cerveja. Beba cerveja. Repetir. Se isso não fizer a dor desaparecer, consiga algo mais forte.

janelas

  • Parar serviço
  • Excluir diretório de dados
  • execute novamente o initdb usando runas.execomo usuário do postgres (pré-9.2) ou NETWORKSERVICE(9.2+). Ou apenas mude a propriedade depois.
Craig Ringer
fonte
11
Para o OS X, a desinstalação e limpeza do brew não toca nos meus dados dir /usr/local/var/[email protected]. (ele remove o aplicativo em /usr/local/opt/[email protected], observe "opt" not "var") "rm -rf /usr/local/var/[email protected]" era necessário antes da reinstalação.
Curtis Yallop
4

Não é melhor apenas remover e reinstalar?

Dessa forma, você obterá a versão mais recente e atualizará quaisquer dependências ao longo do caminho.

Execute: sudo apt-get --purge remove postgresql

Então: sudo apt-get install postgresql

i-CONICA
fonte
11
Isso não remover usuários DB + existentes (como de Postgres 9.5)
Sebastian Wagner