OK, sou relativamente novo no linux. Alguns meses atrás, consegui criar um site usando a versão do CentOS, PHP e Postgres 9.1 da Amazon. Eu fiz um initdb on / pgdata que foi montado em um volume do Amazon que eu criei para esse propósito. O site estava zumbindo desde então, e eu senti que isso não era tão difícil, afinal! :)
Mas agora, meu site está inativo. Veja o que aconteceu ...
Ontem entrei para começar algumas alterações no site. A primeira coisa que vi foi que havia algumas atualizações disponíveis (naturalmente), então eu corri "yum update". Ele fez um monte de coisas e relatou sucesso. Legal!
Tudo estava indo bem no meu site até que eu executei uma alteração em uma função do Postgres. Eu recebi um erro:
ERROR: could not load library "/usr/lib64/pgsql/plpgsql.so": "/usr/lib64/pgsql/plpgsql.so": undefined symbol: SPI_plan_get_cached_plan
(estou usando o plpgsql em minhas funções)
O Google levou-me a vários locais que pareciam dizer que só precisava de reiniciar o Postgresql. Eu tentei isso de várias maneiras. Postgres iria parar, mas não começar de novo.
Em algum momento, recebi outra mensagem de erro (mais útil):
"The data directory was initialized by PostgreSQL version 9.1, which is not compatible with this version 9.2.3."
Qual o? Minha atualização do yum instalou uma nova versão incompatível do Postgres? É assim que rolamos no mundo do Linux? Principais atualizações sem avisos sobre o que isso implica ou pedindo minha permissão? Foowee, vou ser mais cuidadoso da próxima vez. Aliás, o que eu deveria ter feito se tivesse meu tempo novamente?
De qualquer forma, isso me levou a esses links e, claro, os documentos do postgres. Estou preso agora em executar o pg_upgrade. Aqui está o meu comando até agora:
pg_upgrade -d /pgdata_temp -D /pgdata -b /usr/lib64/pgsql/postgresql-9.1/bin/ -B /??/ -v
Como descubro onde o novo diretório bin do Postgres está (para o argumento / B)? Não parece estar em lugar algum. E ainda assim, quando corri
su - postgres
initdb -D /pgdata -E UTF8
cat /pgdata/PG_VERSION
... anteriormente, eu tenho "9,2".
Qualquer ajuda seria muito apreciada. Talvez eu apenas reverter para 9.1? Essa é minha melhor estratégia? Então, como evito atualizações quando executo a atualização do yum na próxima vez? Ou então, estou feliz em atualizar, mas como faço isso e atualizo meu banco de dados existente para o 9.2.3?
Obrigado!
EDIT: Eu decidi que minha próxima melhor opção era abandonar 9.1 e meu banco de dados (eu tinha uma cópia dos dados no formato CSV), e reconstruir um banco de dados 9.2 do zero com os scripts que mantive na versão 9.1 inicial. / p>
sudo su -
cd /pgdata
rm -fr * .* (delete everything in /pgdata from 9.1 database - I kept a backup first)
su - postgres
initdb -D /pgdata -E UTF
Edite o postgresql.conf e o pg_hba.conf e inicie o servidor.
Ainda não faço ideia
- onde o yum coloca os binários da versão 9.2 - e ainda o binário 9.1
diretório ainda existe
- como obter
service postgresql upgrade
trabalhando
Mas depois de dias de pesquisas no Google e de inatividade do servidor, eu não me importo mais.