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

8.3.4.1.1. Execução de um despejo SQL

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
Copy to Clipboard Toggle word wrap

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 -h para 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 -p para definir o porto.

    A porta padrão é indicada pela variável de ambiente PGPORT ou pela variável compilada por padrão.

Nota

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
Copy to Clipboard Toggle word wrap
8.3.4.1.2. Restauração de banco de dados a partir de um dump SQL

Para restaurar um banco de dados a partir de uma lixeira SQL:

  1. Criar um novo banco de dados (dbname):

    criadob dbname
    Copy to Clipboard Toggle word wrap
  2. 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.

  3. Execute o psql para restaurar um arquivo de texto criado pelo pg_dump utilidade:

    psql dbname < dumpfile
    Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap
8.3.4.1.2.1. Restaurando um banco de dados em outro servidor

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
Copy to Clipboard Toggle word wrap
8.3.4.1.2.2. Manuseio de erros SQL durante a restauração

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
    Copy to Clipboard Toggle word wrap
  • Especificar que toda a lixeira é restaurada como uma única transação para que a restauração seja totalmente concluída ou cancelada usando psql com uma das seguintes opções:

    psql -1
    Copy to Clipboard Toggle word wrap

    ou

    psql --transação única
    Copy to Clipboard Toggle word wrap

    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

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

Para mais informações sobre o dump SQL, consulte a Documentação do PostgreSQL.

Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat