Re: [pgbr-geral] ROTINA DE BACKUP COM VACUUM

2013-08-21 Por tôpico Matheus de Oliveira
On Wed, Aug 21, 2013 at 1:46 AM, Waister Marques . waiste...@hotmail.comwrote:

 Tudo bem pessoal.
 Criei uma rotina de backup do meu banco que esta na versão 9.2, é gostaria
 de implementar a mesma com compactação e vacuum full, baiaxo segue a rotina
 que criei, detalhe que criei um rolin no banco para mais um usuário.

 @echo off

for /f tokens=1-4 delims=/  %%i in (%date%) do (
  set dow=%%i
  set month=%%j
  set day=%%k
  set year=%%l
   )

   for /f tokens=1-4 delims=:  %%a in (%time%) do (
  set hora=%%a
  set minu=%%b

   )

set datestr=%hora%-%minu%-%dow%%year%-%month%-%day%
echo datestr is %datestr%

set BACKUP_FILE=Retaguarda-%datestr%.backup
echo backup file name is %BACKUP_FILE%
SET PGPASSWORD=postgres
echo on
pg_dump -i -h localhost -p 5432 -U retaguarda_dba -F c -b -v -f
 %BACKUP_FILE% retaguarda_db


Algumas coisas ruins que notei na sua rotina:

1. Adicionar o PGPASSWORD no script, tente usar .pgpass, e mude essa senha
para algo que (1) não tenha publicado na internet, (2) não seja tão
comum/obvio.

2. Remova o -i, está depreciado. Sempre use o binário correto e seja
feliz...

3. Esse novo usuário, não é superusuário, é? Se for, não deveria, criei um
usuário com permissões somente-leitura nessa base.

Fora isso, sua rotina **de dump** parece boa, mas verifique também a
possibilidade de implantação de PITR [1], há quem considere que Dump não é
backup [2] (nas palavras do famoso Telles).

Esta funcionando beleza, pois coloquei a .bat dentro da pasta C:\Program
 Files\PostgreSQL\9.2\bin do 2008 server,


Não posso palpitar muito sobre o Windows, mas isso não me parece uma boa
prática (não seria no Linux), creio que em C:\Program Files\PostgreSQL
deveria ter apenas o que foi instalado pelo instalador do PostgreSQL (minha
opinião), o que facilitará a administração e atualização do banco de dados
no futuro. Para resolver, recomendo colocar todos seus scripts num mesmo
local (ou ao menos com um diretório parente em comum) e alterar a variável
de ambiente PATH para o bin do PostgreSQL, ou ainda usar caminhos absolutos
(definindo uma variável para o caminho, claro). Se batch poder incluir
arquivos (não sei se dá) seria legal definir essas variáveis comuns num
arquivo a parte.


 como faço para implementar ela com o comando vacuum full antes de fazer o
 backup e depois compactar o banco?


Aí vem a dúvida: por que você quer fazer isso? Em muitos casos, muitos
mesmo, um vacuum full diário é completamente desnecessário e pode até
causar uma perda de performance no seu banco de dados (principalmente se
tiver muitos UPDATEs). O que eu recomendaria num cenário geral, sem análise
mais profunda, é rodar simplesmente um vacuum analyze (sem o full):

vacuumdb -z -h localhost -p 5432 -U retaguarda_dba

No mais, mantenha o autovacuum ativo e, se necessário, vá ajustando os
parâmetros do mesmo para casar com seu ambiente. Vale notar que para
muitos casos (principalmente ambientes menores - poucos usuários, base
pequena) as configurações padrões do autovacuum são o suficiente para tomar
conta do seu banco (pelo menos nas versões mais recentes do PG, como seu
caso).

Para ver se realmente precisa de vacuum full, dê uma analisada periódica no
inchaço de suas tabelas e faça somente para aquelas que estiverem ruins.

[1] http://www.postgresql.org/docs/current/static/continuous-archiving.html
[2] http://savepoint.blog.br/dump-nao-e-backup/
[3] http://wiki.postgresql.org/wiki/Show_database_bloat

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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] ROTINA DE BACKUP COM VACUUM

2013-08-20 Por tôpico Waister Marques .
Tudo bem pessoal.Criei uma rotina de backup do meu banco que esta na versão 
9.2, é gostaria de implementar a mesma com compactação e vacuum full, baiaxo 
segue a rotina que criei, detalhe que criei um rolin no banco para mais um 
usuário.
@echo off for /f tokens=1-4 delims=/  %%i in (%date%) do ( set 
dow=%%i set month=%%j set day=%%k set year=%%l  )  
  for /f tokens=1-4 delims=:  %%a in (%time%) do ( set hora=%%a set 
minu=%%b   )set datestr=%hora%-%minu%-%dow%%year%-%month%-%day%   
echo datestr is %datestr%  set BACKUP_FILE=Retaguarda-%datestr%.backup   
echo backup file name is %BACKUP_FILE%   SET PGPASSWORD=postgres   echo on   
pg_dump -i -h localhost -p 5432 -U retaguarda_dba -F c -b -v -f %BACKUP_FILE% 
retaguarda_db
Esta funcionando beleza, pois coloquei a .bat dentro da pasta C:\Program 
Files\PostgreSQL\9.2\bin do 2008 server, como faço para implementar ela com o 
comando vacuum full antes de fazer o backup e depois compactar o banco?
 







Waister Marques de Oliveira 

Telefone: (64) 9695-1884

Skype: waiste...@hotmail.com

  ___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral