Parece uma pergunta simples e fácil, mas sou muito novo na administração do PostgreSQL e não tenho certeza da melhor maneira de fazer as coisas. Eu tenho um banco de dados PostgreSQL (9.1) que de alguma forma foi corrompido (ocorreu erros no log Write-Ahead) e estou tentando descarregar, reinicializar e restaurá-lo para recuperá-lo em um estado estável.
No entanto, parece que initdb
a maneira recomendada de criar um novo banco de dados estável, na verdade, cria um cluster de banco de dados inteiro. Para executar este comando, primeiro eu teria que descartar meu cluster de banco de dados, mas a documentação do pg_dropcluster
comando diz que ele remove "todos os arquivos que pertencem a um determinado cluster PostgreSQL; isso inclui o diretório de dados, o arquivo de log e todos arquivos de configuração." Não quero excluir os logs e arquivos de configuração, apenas os dados.
Como há apenas um banco de dados criado pelo usuário em meu cluster (ou seja, aquele que estou tentando restaurar), eu poderia simplesmente me conectar ao cluster, descartar esse banco de dados e recriá-lo a partir do despejo. Mas então eu não estaria executando initdb
, e talvez isso deixasse meu cluster de banco de dados em algum estado corrompido.
Existe uma maneira de descartar e restaurar o conteúdo dos dados de um cluster sem excluir todos os logs e definições de configuração? Como alternativa, não há problema em simplesmente descartar e restaurar o banco de dados para recuperá-lo da corrupção?