Acabei yum update
de executar minha instância do Amazon Linux como parte de uma atualização para 2012.09 e atualizei o PostgreSQL de 9.1 para 9.2. Agora o PostgreSQL não inicia. O que eu faço?
(Esta é uma pergunta muito incompleta porque está aqui apenas para fornecer um lugar para postar a resposta).
Os pacotes da Amazon para PostgreSQL serão atualizados de 9.1 para 9.2 como se fosse uma atualização secundária normal. Não é; consulte a política de versão do PostgreSQL , que deixa claro que a versão principal é "xy", por exemplo, "9.1", "9.2" etc. Essa política de versão pode ser estranha e talvez imprudente, mas também é amplamente compreendida e algo que você esperaria empacotadores para entender. A documentação para atualizar um cluster PostgreSQL explica este ponto muito claramente.
Os pacotes da Amazon parecem não entender isso e apenas atualizam o PostgreSQL. Esta é uma péssima ideia. As atualizações podem envolver tempo de inatividade e alterações que quebram a compatibilidade com versões anteriores. As funções de extensão C devem ser recompiladas. Um despejo e um recarregamento podem ser necessários se
pg_upgrade
não puderem ser usados com seu banco de dados. Mesmo quepg_upgrade
possa ser usado, o tempo de inatividade pode ser significativo.Veja o grave erro de empacotamento do PostgreSQL da Amazon por Andrew Dunstan e este relatório de bug nos fóruns da AWS .
A Amazon
temuma entrada de FAQ para isso, mas é realmente a resposta errada. A resposta certa é "não atualize sem perguntar!". Não apenas isso, mas fazer umpg_upgrade
pode exigir alguma preparação e não funcionará para todos os bancos de dados. Este é um péssimo conselho. (Eles parecem ter removido silenciosamente esta entrada de FAQ agora, isso ajudará os clientes que ainda estão atualizando de versões mais antigas!)No entanto,
pg_upgrade
é sua única opção fácil depois que isso acontecer. Se você não puder usá-lo, precisará reverter para o PostgreSQL 9.1,pg_dump
seus bancos de dados epg_dumpall --globals-only
também, instalar o 9.2 e carregar os dumps. Consulte atualizando um cluster PostgreSQL