Pessoal,

Cenário:
PostgreSQL: 9.2.4

Atualize para 9.2.9. Há diversos bugs do pg_dump corrigidos, alguns que podem estar relacionados ao seu problema.

S.O: Windows server 2008 R2 - 64 bit
Servidor com 4GB de ram
shared_buffers: 1228MB
1 base de dados de 32GB com 167 mil tabelas

Problema:
Não consigo efetuar dump, dá out of memory (a mensagem diz que devo
aumentar o parâmetro max_locks_per_transaction) que atualmente está em 2048;

Você poderia verificar se essa mensagem está gravada no log também, além da saída em tela? Eu verificaria um outro problema, pode ser que você tenha arquivos demais no diretório do cluster e o Windows (na verdade o NTFS) pode não estar gostando disso.
Você tem alguma mensagem do S.O. também?

Pelo pgadmin, só para conectar na base, demora mais de 5 minutos;

O PgAdmin vai ler essas 167 mil tabelas pra montar a árvore que aparece na tela, logo, usar o PgAdmin não me parece uma boa ideia na sua situação.

Se você puder separar essas tabelas todas em esquemas organizados talvez você tenha algum ganho.

Fiz um script para efetuar dump tabela por tabela, mas o processo demora
em média 1 minuto para cada tabela, parei o script após 30 minutos
(processou apenas 30 tabelas);

Você poderia postar suas configurações? Pelo menos aquelas que não estão no default.
Essas tabelas são grandes?

Creio que a lentidão ocorre se a query envolver tabelas do catálogo,
pois pelo psql, um simples \d demora uma eternidade;

Pelo mesmo princípio do PgAdmin, o \d lê essas 167 mil entradas, isso toma tempo. É possível que você tem um problema de catálogo chamado inchaço, isso acontece principalmente se muitos objetos foram recriados. Talvez você tenha de fazer um VACUUM FULL no catálogo, pode ser que resolva seu problema.

Pergunta:
Existe alguma configuração que possa ser feita para melhorar o
desempenho? Ou alguma estratégia de backup para este cenário?

Faça backups físicos, seja parando o cluster e copiando o diretório de dados, ou pela estratégia PITR (recomendo), pra se prevenir de perdas de dados pelo momento.

Mas resolva esse problema do dump. Você pode ter outros problemas associados, além é claro de ser necessário fazer dump com certa regularidade, o pg_dump é uma ótima forma de saber se a saúde do banco de dados está em dia. O seu não está.

Imagino que um dos passos seria colocar linux, mas somente isso iria
resolver?

Você precisa do dump pra fazer a migração.
Não sei se isso vai amenizar seus problemas, mas minha opinião sobre sistemas operacionais é extremista e você não deveria usar Windows ou qualquer outro S.O. proprietário :)

Um participante do PGBR 2013 palestrou sobre algo em maior escala que o seu banco, com 1 bilhão de tabelas no mesmo servidor, eu tive o prazer de fazer a tradução consecutiva dessa palestra.

Veja os links, infelizmente estão só em inglês de outras conferências.

http://www.pgcon.org/2013/schedule/events/595.en.html
http://www.youtube.com/watch?v=Yr0-0w0A_I8

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

Responder a