Pesquisar

8.3.4. Cópia de segurança dos dados PostgreSQL

download PDF

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

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
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
  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

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
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
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
  • 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

    ou

    psql --transação única

    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.

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.

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 oBlog 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.

© 2024 Red Hat, Inc.