Como dizia um professor meu: Se o backup não é importante, o seu emprego também não é!
Pensando nisso, nada melhor que deixar programada uma rotina de backup com a frequência mais adequada ao seu caso.
O PostgreSQL oferece uma ferramenta própria para backup chamada pg_dump. Com ela podemos realizar backups tanto do schema quanto dos dados (ou e/ou outro), para arquivo tar ou plain text.
Analisando o próprio help da ferramenta, podemos seguir seu padrão de uso:
Usage:
pg_dump [OPTION]... [DBNAME]
Um exemplo básico:
pg_dump -Ft -f arquivo.tar nome_do_banco
No exemplo acima não informamos nem usuário e nem o host da conexão. Sendo assim, o pg_dump assume que você realizará o login na própria máquina (localhost) e utilizará o mesmo usuário que está logado no sistema operacional. O -F informa qual tipo de arquivo utilizaremos para a saída dos dados (arquivo de destino), no caso, o tipo TAR e criaremos o arquivo chamado arquivo.tar.
Para informar o usuário usamos a opção -U e para o host a opção -h, como no exemplo abaixo:
pg_dump -Ft -U usuario_do_banco -h ip_do_banco -f arquivo.tar nome_do_banco
Ou
pg_dump -Ft -U postgres -h 192.168.1.10 -f arquivo.tar nome_do_banco
Podemos, ainda, definir uma série de parâmetros para personalizar nosso backup. Sendo eles:
Opções Gerais
-v -> para exibir o progresso do processo na tela durante a execução
-f ->para informar o nome do arquivo de destino
-z ->para comprimir o arquivo de saída
Opções de controle da saída do conteúdo
-a ->exporta somente os dados do banco
-b ->inclui blobs (objetos longos) no dump
-c ->limpa os objetos antes de recriar (durante o restore)
-C ->inclui o comando para criar o banco de dados no restore
-E -> especifica qual encoding será usado no backup
-n ->especifica em qual schema será realizado o backup.
-N ->exclui o schema informado do backup
-o ->inclui os OIDs dos objetos
-O ->não inclui a restauração do proprietário do objeto (owner) durante o restore.
-s ->realiza backup apenas do schema, ou seja, da estrutura do banco de dados
-t ->especifica o backup de apenas uma tabela
-T ->exclui a tabela do backup
-x ->não inclui os privilégios (grant/revoke)
Opções de Conexão
-h ->host do servidor do banco de dados
-p ->porta do servidor do banco de dados
-U ->nome do usuário que logará e efetuará o backup no servidor
-w ->não será solicitado password ao executar o comando
-W -> forçará a solicitação de password
-a ->exporta somente os dados do banco
-b ->inclui blobs (objetos longos) no dump
-c ->limpa os objetos antes de recriar (durante o restore)
-C ->inclui o comando para criar o banco de dados no restore
-E -> especifica qual encoding será usado no backup
-n ->especifica em qual schema será realizado o backup.
-N ->exclui o schema informado do backup
-o ->inclui os OIDs dos objetos
-O ->não inclui a restauração do proprietário do objeto (owner) durante o restore.
-s ->realiza backup apenas do schema, ou seja, da estrutura do banco de dados
-t ->especifica o backup de apenas uma tabela
-T ->exclui a tabela do backup
-x ->não inclui os privilégios (grant/revoke)
Opções de Conexão
-h ->host do servidor do banco de dados
-p ->porta do servidor do banco de dados
-U ->nome do usuário que logará e efetuará o backup no servidor
-w ->não será solicitado password ao executar o comando
-W -> forçará a solicitação de password
O comando pg_dump pode ser executado tanto via linux (linha de comando) quanto no windows através do prompt de comando.
Em breve postarei outro artigo falando sobre restaurar o backup utilizando o pg_restore.