8.3.4. Cópia de segurança dos dados PostgreSQL
Para fazer o backup dos dados PostgreSQL, use uma das seguintes abordagens:
- Lixeira SQL
- Backup em nível de sistema de arquivos
- Arquivamento contínuo
8.3.4.1. Backing up de dados PostgreSQL com um dump SQL Copiar o linkLink copiado para a área de transferência!
8.3.4.1.1. Execução de um despejo SQL Copiar o linkLink copiado para a área de transferência!
O método SQL dump é baseado na geração de um arquivo com comandos SQL. Quando este arquivo é carregado de volta ao servidor de banco de dados, ele recria o banco de dados no mesmo estado em que se encontrava no momento da descarga. O despejo SQL é garantido pelo método pg_dump que é uma aplicação do cliente PostgreSQL. O uso básico do comando pg_dump é tal que o comando escreve seu resultado na saída padrão:
pg_dump dbname > dumpfile
pg_dump dbname > dumpfile
O arquivo SQL resultante pode ser em formato de texto ou em outros formatos diferentes, o que permite o paralelismo e um controle mais detalhado da restauração de objetos.
Você pode realizar o dump SQL a partir de qualquer host remoto que tenha acesso ao banco de dados. O pg_dump não opera com permissões especiais, mas deve ter acesso lido a todas as tabelas que você deseja fazer backup. Para fazer o backup de todo o banco de dados, você deve executá-lo como um superusuário do banco de dados.
Para especificar qual servidor de banco de dados pg_dump entrará em contato, use as seguintes opções de linha de comando:
A opção
-hpara definir o anfitrião.O anfitrião padrão é o anfitrião local ou o que é especificado pela variável de ambiente
PGHOST.A opção
-ppara definir o porto.A porta padrão é indicada pela variável de ambiente
PGPORTou pela variável compilada por padrão.
Note que pg_dump despeja apenas um único banco de dados. Ele não descarta informações sobre papéis ou espaços de tabela porque tais informações são de todo o cluster.
Para fazer backup de cada banco de dados em um determinado cluster e para preservar dados em todo o cluster, tais como definições de funções e espaço de tabela, use o comando pg_dumpall:
pg_dumpall > arquivo dump
pg_dumpall > arquivo dump
8.3.4.1.2. Restauração de banco de dados a partir de um dump SQL Copiar o linkLink copiado para a área de transferência!
Para restaurar um banco de dados a partir de uma lixeira SQL:
Criar um novo banco de dados (dbname):
criadob dbname
criadob dbnameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Certifique-se de que todos os usuários que possuem objetos ou receberam permissões sobre objetos no banco de dados despejados já existam.
Se tais usuários não existirem, a restauração não consegue recriar os objetos com a propriedade e as permissões originais.
Execute o psql para restaurar um arquivo de texto criado pelo pg_dump utilidade:
psql dbname < dumpfile
psql dbname < dumpfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
onde dumpfile é a saída do comando pg_dump.
Se você quiser restaurar uma lixeira de arquivos sem texto, use o utilitário pg_restore:
pg_restore non-plain-text-file
pg_restore non-plain-text-file
8.3.4.1.2.1. Restaurando um banco de dados em outro servidor Copiar o linkLink copiado para a área de transferência!
O despejo de um banco de dados diretamente de um servidor para outro é possível porque pg_dump e psql pode escrever e ler a partir de tubos.
Para descarregar um banco de dados de um servidor para outro, execute:
pg_dump -h host1 dbname | psql -h host2 dbname
pg_dump -h host1 dbname | psql -h host2 dbname
8.3.4.1.2.2. Manuseio de erros SQL durante a restauração Copiar o linkLink copiado para a área de transferência!
Por padrão, psql continua a ser executado se ocorrer um erro SQL. Conseqüentemente, o banco de dados é restaurado apenas parcialmente.
Se você quiser mudar este comportamento padrão, use uma das seguintes abordagens:
Faça psql sair com um status de saída de 3 se ocorrer um erro SQL, definindo a variável
ON_ERROR_STOP:psql --set ON_ERROR_STOP=onome dbname < dumpfile
psql --set ON_ERROR_STOP=onome dbname < dumpfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow Especificar que toda a lixeira é restaurada como uma única transação para que a restauração seja totalmente concluída ou cancelada usando
psqlcom uma das seguintes opções:psql -1
psql -1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ou
psql --transação única
psql --transação únicaCopy to Clipboard Copied! Toggle word wrap Toggle overflow Note que ao utilizar esta abordagem, mesmo um erro menor pode cancelar uma operação de restauração que já tenha funcionado por muitas horas.
8.3.4.1.3. Vantagens e desvantagens de uma lixeira SQL Copiar o linkLink copiado para a área de transferência!
Uma lixeira SQL tem as seguintes vantagens em comparação com outros métodos de backup PostgreSQL:
- Um dump SQL é o único método de backup PostgreSQL que não é específico para uma versão de servidor. A saída do pg_dump pode ser recarregado em versões posteriores de PostgreSQL, o que não é possível para backups em nível de sistema de arquivos ou arquivamento contínuo.
- Um dump SQL é o único método que funciona ao transferir um banco de dados para uma arquitetura de máquina diferente, como ir de um servidor de 32 bits para um de 64 bits.
- Um lixão SQL fornece lixões internamente consistentes. Um depósito de lixo representa um instantâneo do banco de dados no momento em que o pg_dump começou a funcionar.
- O pg_dump não bloqueia outras operações no banco de dados quando ele está em funcionamento.
Uma desvantagem de um despejo SQL é que leva mais tempo em comparação com o backup em nível de sistema de arquivos.
8.3.4.1.4. Recursos adicionais Copiar o linkLink copiado para a área de transferência!
Para mais informações sobre o dump SQL, consulte a Documentação do PostgreSQL.