2013/4/29 Filho Arrais <[email protected]>

>
>
> Em 27 de abril de 2013 09:29, Matheus de Oliveira <
> [email protected]> escreveu:
>
>>
>>
>> 2013/4/26 Filho Arrais <[email protected]>
>>
>>>
>>> Em 26 de abril de 2013 19:17, Osvaldo Kussama <[email protected]
>>> > escreveu:
>>>
>>>  Em 26/04/13, Filho Arrais<[email protected]> escreveu:
>>>> > Percebi agora que gerou um erro, como o monitor não estava ajustado, a
>>>> > mensagem ficou escondida (mico).
>>>> >
>>>> > WARNING:  erros ignored on restore: 17761
>>>> >
>>>> > Além das *Functions, *os *Login Rules* também não subiram no restore.
>>>> >
>>>>
>>>>
>>>> Para o caso das roles é normal. O pg_dump não trata as roles.
>>>>
>>>> Se necessário utilize o pg_dumpall [1] com a opção --roles-only (ou -r).
>>>>
>>>>
>>> Tenho varias bases nesse mesmo banco, fazer o pg_dumpall seria
>>> complicado, vai demorar demais, juntando as duas maiores bases, passa de
>>> 100 GB.
>>>
>>> Teria uma parâmetro que eu podesse passar no pg_dump pra levar todos os
>>> dados?
>>>
>>>
>>
>> Passando o parâmetro "-s" ao pg_dumpall ele vai gerar um dump apenas dos
>> objetos globais, daí é só restaurá-lo antes de executar o pg_restore.
>>
>>
> Fiz esse processo, porém não especifiquei o encoding.
>
>
Cara, mil desculpas, é o "-g" que deve passar ao pg_dumpall para gerar um
dump apenas dos objetos globais (roles, tablespaces, etc.).



> Demonstração do arquivo (188 usuário), coloquei o inicio e o fim do
> arquivo.
>
> (...)
>
>
A não ser que use o banco de dados "postgres" (realmente não devia), não há
com o que se preocupar. O "pg_dumpall
O ideal é você remover o banco e usar o "-C" no pg_restore para que ele
"recrie" o banco igual ao anterior, evitando dores de cabeça.

No postgresql.conf , contem  a seguinte configuração. ( ambas as máquinas
> estão com os arquivos de configurações idênticos).
>
> client_encoding = LATIN1
>
>
> Quando conecto via PgAdmin, a informação da base é essa [1].
>
> Pode o postgresql.conf ta com client_encoding = LATIN1 e minha base com
> UTF8?
>
> Quando fiz o dump da base de dados, especifiquei o encoding.
>
> pg_dump –U postgres  –Fc –v –f nome_do_backup.dump nomedobanco –E UTF8
>
>
>
O client_encodinng é o encoding usado na conexão (como o cliente verá os
dados), já o encoding do banco é como os dados serão armazenados. Se você
deixar client_encoding=latin1, tudo bem, desde que seja o que sua aplicação
espera.

Eu, particularmente, recomendo você deixar como no ambiente anterior, já
que é uma aplicação de terceiros (certo?).



> Poderiam me dizer como exporta as schemas (estrutura das tabelas, login
> roles, etc) e depois só dos dados ? Isso é viável? Tem como exportar tudo
> de uma vez? Qual o procedimento correto?
>
> Também, como restaurar essas informações em uma nova máquina, levando em
> consideração que o postgres  está recém instalado.
>
>
Como eu disse, não é viável exportar um-a-um, pois o pg_restore já faz uma
otimização bem bacana quando exporta tudo de uma vez (de fato ele faz: 1.
schemas das tabelas sem constraints e índices;  2. dados; 3. índices e
constraints).

Então, no geral seria o seguinte (ajuste os parâmetros de conexão):

Na máquina antiga, gere os dumps:
1. global: pg_dumpall -g -f global.sql
2. do banco: pg_dump -Fc <banco> -f <banco>.dump

Na nova máquina, restaure:
1. global: psql -f global.sql
2. banco (não o crie antes): pg_restore -C -j <num cores> -d postgres -f
<banco>.dump


Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a