2011/10/8 Leonardo Carneiro <[email protected]>

> Bom dia a todos,
>
> Recentemente fiz um upgrade da versão 8.4.x para a 9.0.4 usando
> dump/restore. A operação em sí foi bem sucessida, mas o downtime foi enorme.
> Estou agora planejando realizar o upgrade para a versão 9.1.1 e estou
> realizando testes com o pg_upgrade, para minimizar, mas estou me deparando
> com um erro que não estou sabendo lidar. Segue os dados do ambiente:
>
> SO: Ubuntu 11.04 32bit
> Pasta da instalação do PG antigo: /usr/local/pgsql/9.0.4 (compilado do
> fonte)
> Pasta da instalação do PG novo: /usr/local/pgsql/9.1.1 (compilado do fonte)
> Cluster antigo: /var/database.old
> Cluster novo: /var/database
>
> Ambos os clusters estão com autenticação trust para conexões locais. O
> antigo está na porta 5432, enquanto o novo está na porta 5433. Não existem
> usuários acessando as bases. Segui a risca o procedimento descrito em
> http://www.postgresql.org/docs/current/static/pgupgrade.html.
>
> Estou executando com o comando --check primariamente, uma vez que ainda
> estou realizando os primeiros testes com o procedimento. Segue execução do
> comando:
>
> postgresql@reploid:~$ /usr/local/pgsql/9.1.1/bin/pg_upgrade -d
> /var/database.old/ -D /var/database/ -b /usr/local/pgsql/9.0.4/bin/ -B
> /usr/local/pgsql/9.1.1/bin/ -p 5432 -P 5433 -v -c
> Running in verbose mode
> Performing Consistency Checks
> -----------------------------
> Checking current, bin, and data directories ok
> Checking cluster versions ok
> "/usr/local/pgsql/9.0.4/bin/pg_ctl" -w -l "/dev/null" -D
> "/var/database.old" -o "-p 5432 -c autovacuum=off -c
> autovacuum_freeze_max_age=2000000000" start >> "/dev/null" 2>&1
> Checking database user is a superuser ok
> Checking for prepared transactions ok
> Checking for reg* system oid user data types ok
> Checking for contrib/isn with bigint-passing mismatch ok
> "/usr/local/pgsql/9.0.4/bin/pg_ctl" -w -l "/dev/null" -D
> "/var/database.old" stop >> "/dev/null" 2>&1
> "/usr/local/pgsql/9.1.1/bin/pg_ctl" -w -l "/dev/null" -D "/var/database" -o
> "-p 5433 -b" start >> "/dev/null" 2>&1
> There were problems executing "/usr/local/pgsql/9.1.1/bin/pg_ctl" -w -l
> "/dev/null" -D "/var/database" -o "-p 5433 -b" start >> "/dev/null" 2>&1
>
> pg_ctl failed to start the new server
> Failure, exiting
>
> Mesmo resultando falha ao iniciar o novo server, o mesmo está rodando após
> o comando:
>
> postgresql@reploid:~$ ps aux | grep postgres
> 1001 19781 0.0 0.0 7652 1948 pts/0 S 11:02 0:00 su - postgresql
> 1001 19919 0.3 0.2 40800 5672 pts/0 S 11:02 0:00
> /usr/local/pgsql/9.1.1/bin/postgres -D /var/database -p 5433 -b
>
> Após isso, eu parei o server e tentei iniciar ele "na mão", com o mesmo
> comando que o pg_upgrade tentou executar:
>
> postgresql@reploid:~$ /usr/local/pgsql/9.1.1/bin/pg_ctl stop -D
> /var/database
> waiting for server to shut down.... done
> server stopped
> postgresql@reploid:~$ /usr/local/pgsql/9.1.1/bin/pg_ctl -w -l "/dev/null"
> -D "/var/database" -o "-p 5433 -b" start
> waiting for server to start..../usr/local/pgsql/9.1.1/bin/pg_ctl: symbol
> lookup error: /usr/local/pgsql/9.1.1/bin/pg_ctl: undefined symbol: PQping
>
> Lí em alguns lugares que isso pode ser erro de link de biblioteca, mas
> estou achando estranho, pois ambas as versões foram compiladas. De qualquer
> maneira, não tenho noção de como resolver isso.
>
> Segue parâmetros de compilação:
>
> 9.0.4: ./configure --prefix=/usr/local/pgsql/9.0.4 --with-openssl
> --with-system-tzdata=/usr/share/zoneinfo
> 9.1.1: ./configure --prefix=/usr/local/pgsql/9.1.1 --with-openssl
> --with-system-tzdata=/usr/share/zoneinfo
>
> Alguém tem alguma idéia do que posso fazer?
>
> Agradeço desde já.
>

Problema resolvido!

Havia achando apenas uma referência a este problema, e era um problema de
empacotamento em um CentOS, onde o pacote ainda apontava para as bibliotecas
antigas. Como eu havia compilado a partir do fonte, isso era praticamente
impossível, maaas...

Anteriormente, eu havia definido a váriável

LD_LIBRARY_PATH=/usr/local/pgsql/9.0.4/lib

no /etc/profile. Isso estava fazendo o pg_ctl da pasta 9.1.1 buscas as libs
da versão anterior, e não as libs da própria pasta. Simplesmente limpei a
váriável e tudo funcionou de acordo.

Fica a dica se alguém passar pela mesma situação.

Leonardo Carneiro.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a