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