Serviço de backup e DR para PostgreSQL

O PostgreSQL é um sistema de banco de dados relacional de objetos de código aberto e poderoso que usa e estende a linguagem SQL combinada com muitos recursos que armazenam e dimensionam com segurança os workloads de dados mais complicados.

API de backup do PostgreSQL usada pelo Backup e DR

  • Backups no nível do volume (rastreamento de blocos de mudança do Linux e snapshot do LVM): o backup e a DR usam os comandos pg_start_backup(label) e pg_stop_backup() do PostgreSQL ao realizar backups com o rastreamento de blocos de mudança do Linux e o snapshot do LVM.

  • Backups completos e incrementais (tradicionais, baseados em arquivos): o backup e a DR usam os comandos de backup baseados em arquivos pg_dump do PostgreSQL. O comando pg_dump não tem uma opção para capturar mudanças incrementais de um banco de dados. Portanto, cada backup é um backup completo de despejo de banco de dados.

    O restabelecimento do banco de dados recupera o banco de dados substituindo fisicamente a área de dados.

  • Backup de registro do PostgreSQL: durante um backup de registro, o Backup e a DR copiam fisicamente todos os WALs do PostgreSQL (WriteAheadLog). Para limpar os registros, o Backup e a DR usam um comando no nível do SO.

Como funciona: backup e DR baseado em volume com CBT do Linux

Somente os blocos alterados são rastreados no bitmap: sem cópia na gravação, sem operações de E/S intensas.

As etapas a seguir descrevem o processo de backup e recuperação de dados:

  1. O agente de backup e DR tem CBT para rastrear blocos alterados na área de dados do banco de dados.

  2. O agente chama a API do banco de dados para congelar ou pausar o banco de dados para backup de dados.

  3. O agente cria um snapshot de LVM da área de dados do banco de dados e sintetiza um bitmap.

  4. Chame a API do agente para descongelar o banco de dados.

  5. O agente copia os blocos alterados para o dispositivo de backup/recuperação, que exclui o snapshot e cataloga o backup.

  6. O appliance emite um snapshot interno e sintetiza um backup virtual completo de ponto em tempo.

  7. Para recuperação de dados, o Backup e a DR montam instantaneamente um disco de preparação gravável e colocam o banco de dados on-line.

O comando de suspensão ou de suspensão é executado no primário para um job de snapshot no nível do volume:

select pg_start_backup(<label>);
select pg_stop_backup();

Os comandos de inatividade e de ativação são executados em um nó de espera para um job de snapshot no nível do volume:

Se a versão do PostgreSQL for 10.x ou mais recente:

select pg_wal_replay_pause();
select pg_wal_replay_resume();

Se a versão do PostgreSQL for 9.x:

select pg_xlog_replay_pause();
select pg_xlog_replay_resume();

Como funciona: backup baseado em arquivos

As etapas a seguir descrevem o processo para realizar o backup e a recuperação de dados com imagens de backup baseadas em arquivos:

  1. O agente de backup e DR é implantado no servidor de banco de dados.

  2. Monte o disco de preparação no servidor de banco de dados.

  3. Invocar o backup completo usando o comando de backup de despejo, gravando o backup no disco montado.

  4. O backup e o DR fazem um snapshot interno. Os backups de registro são feitos de maneira semelhante diretamente no sistema de arquivos em qualquer programação que você configurar.

  5. Para recuperação de dados, o backup e a DR montam o disco de preparação no servidor de banco de dados e iniciam a operação de restauração do banco de dados. Os registros podem ser reproduzidos a qualquer momento após a restauração do banco de dados.

A seguir

Preparar o banco de dados para backup e DR

Outra documentação sobre backup e DR para PostgreSQL