Como você para que o PostgreSQL inicie um cluster no linux (Ubuntu)?

5

Eu preciso reconstruir um cluster devido a alguns parâmetros incorretos definidos quando ele foi criado pela primeira vez. Em particular, cada banco de dados no cluster é definido como LC_COLLATE de en_GB.UTF8 e precisa ser alterado para C .

Estou confortável com o backup do cluster com pg_dumpall , criando um novo cluster com os parâmetros de configuração corretos e, em seguida, restaurando o backup para o novo cluster.

Para manter o risco o mais baixo possível, gostaria de deixar o cluster existente o mais inalterado possível para que possa ser iniciado a pedido, mas NÃO inicia automaticamente uma chamada como sudo service postgresql start . Há espaço em disco suficiente para fazer isso. Edit: Para ser claro sobre isso, quero deixar o antigo cluster instalado, apenas não iniciado.

Como posso deixar o cluster no lugar, mas não tê-lo iniciado automaticamente junto com a nova substituição (corretamente configurada)? Ou seja, como faço para que o PostgreSQL pare de iniciar o cluster antigo, mesmo que ele inicie o novo?

    
por couling 23.12.2011 / 15:18

1 resposta

11

Eu passei mais tempo no Google e, como resultado de um argumento para outra resposta, leia os scripts de inicialização. Isso acaba sendo bem simples:

Desativando o cluster antigo

Nos arquivos de configuração de cada cluster ( /etc/postgresql/<version>/<cluster>/ ) existe um arquivo chamado start.conf . Isso contém apenas uma palavra não comentada - auto . Simplesmente mudando isso para manual , os scripts de inicialização irão ignorar este cluster completamente.

Para iniciar um cluster manualmente, você pode usar pg_ctlcluster <version> <name> .

Como renomear o cluster antigo / novo

Os scripts do PostgreSQL funcionam com base no arquivo postgresql.conf para TODOS os clusters em /etc/postgresql/<version>/<cluster name>/postgresql.conf .

É tentador pensar que você pode simplesmente renomear este diretório para alterar o nome do cluster (mantendo o mesmo nome da versão). Na verdade, é quase tão simples assim.

No entanto, o postgresql.conf faz referência a alguns outros arquivos, como o pg_hba.conf. Estes também serão movidos quando você renomear o diretório. Então, depois de renomear o diretório, você também precisa atualizar essas referências em postgresql.conf.

Não há necessidade de renomear o diretório de dados, no entanto, ele ajuda a manter sua sanidade mental se o nome do diretório de dados segue o nome do cluster. Novamente, se você renomear isso, lembre-se de atualizá-lo no postgresql.conf.

    
por 24.12.2011 / 02:27