Transações / Problema de estouro

1. Transações / Problema de estouro

Vinicius
vinicius.tadeu

(usa Mandriva)

Enviado em 19/09/2011 - 10:26h

Bom dia senhores !
Estou com um problema sério no Postgresql, utilizo a versão 8.3 com Mandriva.
E meu banco está me dando o alerta de estouro de transações.

Ja executei o comando: SELECT datname, age(datfrozenxid) FROM pg_database;
E realmente as transações estão bem proximas de 2bilhôes conforme dados abaixo:

postgres 1971084019
sgalivre 1820810482
sgacdi 1820810482
template1 1820810482
template0 1820802879

já executei o Vacuum via Phppgadmin, e tb via shell (vacuumdb -a -f / vacuumdb -a -z) porém o número continua aumentando e nada de diminuir.

Não tenho muita experiencia em Postgresql, utilizo apenas para rodar um sistema chamado SGA livre, que é para controle de senhas de atendimento nas recepções do Hospital.

Será que alguem poderia me dar uma ajuda ?
Muito Obrigado !


  


2. Re: Transações / Problema de estouro

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 20/09/2011 - 11:33h

qual o erro que está aparecendo ... cola aqui? Outra coisa, quando você roda o Vacuum da alguma mensagem?




3. Re: Transações / Problema de estouro

Vinicius
vinicius.tadeu

(usa Mandriva)

Enviado em 20/09/2011 - 11:58h

A mensagem é essa abaixo:


banco de dados "postgres" deve ser limpado em
10453372 transações
DICA: Para evitar um desligamento do banco de dados,
execute um VACUUM completo em "postgres".

Quando executo o Vacuum não da nenhuma msg de erro nem nada, só fala quais os bancos foram executados.

Obrigado !
Espero que possam me ajudar, to com a corda no pescoço já hehehe


4. Re: Transações / Problema de estouro

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 20/09/2011 - 12:28h

você disse que já fez um vacuum em tudo ... então:

1) verifique se alguma conexão antiga pode estar prendendo o seu xid (veja isso na pg_stat_activity);


postgres=# select * from pg_stat_activity ;
-[ RECORD 1 ]-+---------------------------------
datid | 11564
datname | postgres
procpid | 7468
usesysid | 16385
usename | meu_user
current_query | select * from pg_stat_activity ;
waiting | f
xact_start | 2011-09-20 12:27:59.244259-03
query_start | 2011-09-20 12:27:59.244259-03
backend_start | 2011-09-20 12:25:48.006921-03
client_addr |
client_port | -1



2) faça um VACUUM FREEZE no banco postgres.

base_teste=# \c postgres
psql (8.4.4)
You are now connected to database "postgres".
postgres=# VACUUM FREEZE;




5. Re: Transações / Problema de estouro

Vinicius
vinicius.tadeu

(usa Mandriva)

Enviado em 20/09/2011 - 13:37h

AMigo executei o Selec que vc passou, o resultado foi o mostrado abaixo:

select * from pg_stat_activity ;

datid datname procpid usesysid usename current_query waiting query_start backend_start client_addr client_port
10819 postgres 19291 10 postgres select * from pg_stat_activity ; FALSE 2011-09-20 13:33:39.831987-03 2011-09-20 13:33:39.781651-03 127.0.0.1 35465
10819 postgres 4536 10 postgres <IDLE> FALSE 2011-09-20 13:33:36.226486-03 2011-09-17 10:06:28.109537-03 127.0.0.1 40396
59855 sgalivre 12364 10 postgres <IDLE> FALSE 2011-09-20 13:33:39.85305-03 2011-09-17 10:23:43.710298-03 127.0.0.1 35395
59855 sgalivre 12363 10 postgres <IDLE> FALSE 2011-09-17 10:23:43.745897-03 2011-09-17 10:23:43.707858-03 127.0.0.1 35394
59855 sgalivre 12362 10 postgres <IDLE> FALSE 2011-09-20 13:33:28.28309-03 2011-09-17 10:23:43.700198-03 127.0.0.1 35393
59855 sgalivre 12361 10 postgres <IDLE> FALSE 2011-09-20 13:33:28.283686-03 2011-09-17 10:23:43.695651-03 127.0.0.1 35392
59855 sgalivre 12360 10 postgres <IDLE> FALSE 2011-09-20 13:33:28.283944-03 2011-09-17 10:23:43.691314-03 127.0.0.1 35391
59855 sgalivre 12359 10 postgres <IDLE> FALSE 2011-09-20 13:33:28.284164-03 2011-09-17 10:23:43.686819-03 127.0.0.1 35390
59855 sgalivre 12358 10 postgres <IDLE> FALSE 2011-09-20 13:33:28.284377-03 2011-09-17 10:23:43.680299-03 127.0.0.1 35389
59855 sgalivre 12357 10 postgres <IDLE> FALSE 2011-09-20 13:33:28.284564-03 2011-09-17 10:23:43.673385-03 127.0.0.1 35388
59855 sgalivre 12356 10 postgres <IDLE> FALSE 2011-09-20 13:33:39.852751-03 2011-09-17 10:23:43.67109-03 127.0.0.1 35387
59855 sgalivre 12355 10 postgres <IDLE> FALSE 2011-09-20 13:33:28.282855-03 2011-09-17 10:23:43.663252-03 127.0.0.1 35386
60230 sgacdi 11998 10 postgres <IDLE> FALSE 2011-09-20 13:33:39.831065-03 2011-09-17 10:22:41.021303-03 10.0.1.99 59197
60230 sgacdi 31474 10 postgres <IDLE> FALSE 2011-09-20 13:33:31.865131-03 2011-09-19 07:27:12.751531-03 10.0.1.99 51761
60230 sgacdi 11997 10 postgres <IDLE> FALSE 2011-09-17 10:22:41.124764-03 2011-09-17 10:22:41.016408-03 10.0.1.99 59196
60230 sgacdi 11995 10 postgres <IDLE> FALSE 2011-09-20 13:33:31.865131-03 2011-09-17 10:22:41.005203-03 10.0.1.99 59194
60230 sgacdi 11994 10 postgres <IDLE> FALSE 2011-09-20 13:33:31.865254-03 2011-09-17 10:22:41.001809-03 10.0.1.99 59193
60230 sgacdi 11993 10 postgres <IDLE> FALSE 2011-09-20 13:33:31.866241-03 2011-09-17 10:22:41.000233-03 10.0.1.99 59192
60230 sgacdi 11992 10 postgres <IDLE> FALSE 2011-09-20 13:33:31.866419-03 2011-09-17 10:22:40.996139-03 10.0.1.99 59191
60230 sgacdi 11991 10 postgres <IDLE> FALSE 2011-09-20 13:33:31.866587-03 2011-09-17 10:22:40.982763-03 10.0.1.99 59190
60230 sgacdi 11990 10 postgres <IDLE> FALSE 2011-09-20 13:33:31.867002-03 2011-09-17 10:22:40.980683-03 10.0.1.99 59189
60230 sgacdi 11989 10 postgres <IDLE> FALSE 2011-09-20 13:33:39.830351-03 2011-09-17 10:22:40.977388-03 10.0.1.99 59188

22 Linha(s)

Total runtime: 39.303 ms

SQL executado.

Quanto a execução do Vaccum Freze eu posso fazer em produção ?
Ou todo mundo tem que sair do sistema ?

Mais uma vez obrigado pela ajuda.



6. Re: Transações / Problema de estouro

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 20/09/2011 - 19:01h

bom pelo que você colocou o banco que está precisando de manutenção é o postgres ... voce fez um vacuum nele ...

faça um vacuum verbose antes de tentar o freeze e ve se tem algum warning ou error ... se for o caso pode colar ai que a gente ajuda a analizar.


no caso acho que para usar o freeze tem que estar fora mesmo ... como nunca usei em produção estou dando uma pesquisada.




7. Re: Transações / Problema de estouro

Vinicius
vinicius.tadeu

(usa Mandriva)

Enviado em 21/09/2011 - 08:33h

Pelo oque estou vendo o Vacuum parece que não está rodando no postgres, nos outros ele roda, mas no banco do postgres parece que não. Ele fala que foi executado, mas pelo visto não ta executando.

Tem como apagar esse banco postgres e criar um novamente e depois realizar o restore do banco ?


8. Re: Transações / Problema de estouro

Vinicius
vinicius.tadeu

(usa Mandriva)

Enviado em 21/09/2011 - 08:38h

Executei o comando Vacuum db -a -f e depois executei o comando SELECT datname, age(datfrozenxid) FROM pg_database;
olha o resultado agora:


datname age
postgres 1998578016
sgalivre 100233641
sgacdi 100233941
template1 100233355
template0 1848296876

os bancos sgalivre e sgacdi diminuiram, mas o postgres e template0 não.





9. Re: Transações / Problema de estouro

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 21/09/2011 - 13:35h

faça o vacuum especificamente nos bancos template0 e postgres. ex:

psql sgacdi

UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';
\c template0
VACUUM;
\c sgacdi
UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template0';

--ai voce tem que fazer o seguinte

\c postgres
VACUUM;

ai vamos ver se funciona!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts