
Barman: Backup PostgreSQL
Informações do documento
Idioma | Portuguese |
Formato | |
Tamanho | 573.34 KB |
Curso | Ciência da Computação |
Tipo de documento | Apresentação |
Resumo
I.pgBarman Gerenciamento de Backup e Recuperação para PostgreSQL
O pgBarman (Backup and Recovery Manager) é uma ferramenta open source escrita em Python, ideal para backup e recuperação de desastre de servidores PostgreSQL. Ele permite backups remotos de múltiplos servidores, oferecendo recursos como Point-in-Time Recovery (PITR), gerenciamento de WAL (Write-Ahead Log), compressão de arquivos e políticas de retenção. O pgBarman simplifica a administração de backups, garantindo a integridade e a alta disponibilidade de seus dados PostgreSQL.
1. O que é pgBarman
O documento introduz o pgBarman (Backup and Recovery Manager) como uma ferramenta open source, escrita em Python, para recuperação de desastres em servidores PostgreSQL. Suas principais funções incluem recuperação local e remota de backups, com suporte SSH para operações remotas. A ferramenta também oferece informações sobre o estado do servidor e permite a compressão de arquivos WAL, utilizando algoritmos como bzip, gzip ou métodos customizados. Essa capacidade de backup e recuperação remota é crucial em ambientes críticos de negócios, auxiliando DBAs no processo de recuperação de dados e oferecendo um sistema de gestão de backups eficiente e robusto. A capacidade de comprimir os arquivos WAL, ou Write-Ahead Log, é um recurso avançado que otimiza o armazenamento e a transferência dos dados de log de transações do PostgreSQL, garantindo a segurança e integridade dos backups gerados pela ferramenta. Em resumo, esta seção define o pgBarman e destaca suas funções principais relacionadas à recuperação de dados e gestão de backups do PostgreSQL.
2. Características e Objetivos do pgBarman
Esta seção detalha as principais características e objetivos do pgBarman. A ferramenta permite a execução de backups físicos completos a quente de um servidor PostgreSQL, permitindo backups sem interromper o funcionamento do banco de dados. Ele também é capaz de gerenciar backups de múltiplos servidores PostgreSQL simultaneamente, simplificando a administração para ambientes com múltiplos bancos de dados. A configuração é facilitada por meio de um simples arquivo INI, tornando o processo de configuração acessível mesmo para administradores com pouca experiência. O pgBarman suporta Point-In-Time Recovery (PITR), uma funcionalidade crucial para recuperar dados para um ponto específico no tempo. Ele também oferece backup remoto de servidores PostgreSQL, aumentando a segurança e redundância dos dados. Finalmente, a ferramenta gerencia os backups da base de dados e os arquivos WAL por meio de um catálogo, facilitando a organização e o acesso aos backups. Em resumo, esta seção destaca a capacidade do pgBarman de lidar com ambientes complexos de PostgreSQL, oferecendo recursos avançados de backup e recuperação.
3. Instalação e Configuração Básica
A instalação do pgBarman é descrita, incluindo a adição de um grupo e usuário do sistema ('barman'). O processo envolve a execução de scripts Python para build e instalação, cópia de arquivos de documentação e criação de links simbólicos para o arquivo de configuração. A configuração se baseia em um arquivo barman.conf
(ou arquivos separados em /etc/barman.d
) no formato INI, permitindo definir o diretório principal de backups e os caminhos para backups base e WALs. A configuração inclui parâmetros como conninfo
para a string de conexão PostgreSQL, a opção compression
para escolher o método de compressão (gzip, bzip2, ou customizado), e configuration_files_directory
(a partir da versão 1.1.2) para especificar o local dos arquivos de configuração. A comunicação SSH bidirecional é configurada nos servidores Barman e PostgreSQL para permitir o backup e a recuperação remotos. Também é possível configurar scripts pré e pós-backup. Em resumo, esta seção orienta o usuário na instalação e na configuração básica do pgBarman, focando nos aspectos mais relevantes para o funcionamento da ferramenta.
II.Recursos Principais do pgBarman
O pgBarman proporciona backup físico a quente, gerenciamento de backups de múltiplos servidores PostgreSQL, recuperação local e remota de backups, utilizando SSH para operações remotas. Oferece um sistema simples de configuração via arquivo INI e permite backup e arquivamento de WALs, com opções de compressão (gzip, bzip2 ou customizada). A ferramenta também inclui um catálogo para gerenciamento de backups da base de dados e arquivos WAL.
1. Backup e Recuperação Completos
O pgBarman oferece a capacidade de realizar backups completos e quentes de servidores PostgreSQL, sem a necessidade de desligar o banco de dados. Esta funcionalidade de backup físico a quente é crucial para minimizar a interrupção dos serviços. Além disso, a ferramenta permite o gerenciamento de múltiplos servidores PostgreSQL, centralizando a administração de backups em um único ponto. A recuperação de dados é suportada tanto localmente quanto remotamente, fornecendo flexibilidade e redundância para garantir a alta disponibilidade dos dados. O uso do protocolo SSH para operações remotas adiciona uma camada extra de segurança. A recuperação é simplificada, pois o pgBarman facilita a localização e o acesso aos backups necessários. A capacidade de realizar backups e recuperações completas e robustas é um recurso fundamental do pgBarman, especialmente para ambientes que exigem alta disponibilidade e tempo de inatividade mínimo.
2. Gerenciamento de WAL e Point in Time Recovery PITR
Um recurso chave do pgBarman é o gerenciamento eficiente dos arquivos WAL (Write-Ahead Log). A ferramenta permite o backup, arquivamento e compressão desses arquivos, otimizando o espaço de armazenamento e acelerando o processo de recuperação. A compressão de arquivos WAL pode ser customizada, utilizando algoritmos como gzip ou bzip2, ou mesmo métodos definidos pelo usuário. A integração do PITR (Point-in-Time Recovery) é um recurso avançado que permite recuperar o banco de dados para um ponto específico no tempo, minimizando a perda de dados em caso de falha. Isso proporciona um alto nível de granularidade na recuperação, permitindo que os administradores recuperem dados para um instante preciso antes da ocorrência de um problema. O gerenciamento de WALs e o suporte a PITR são recursos importantes para garantir a consistência e a integridade dos dados em um ambiente PostgreSQL.
3. Configuração Simplificada e Catálogo de Backups
O pgBarman utiliza um arquivo de configuração simples em formato INI, facilitando a configuração e a customização da ferramenta. Este arquivo permite a definição de parâmetros essenciais para o funcionamento do pgBarman, como o diretório de armazenamento dos backups, as configurações de conexão com o banco de dados, e opções de compressão dos dados. A ferramenta também permite o gerenciamento de backups através de um catálogo, facilitando a organização e localização dos backups gerados para múltiplos servidores e permitindo uma melhor organização dos dados. Este recurso simplifica a busca por backups específicos, acelerando o processo de recuperação. A combinação de um arquivo de configuração intuitivo e um sistema de catálogo robusto torna o pgBarman uma ferramenta fácil de usar e eficiente na gestão de backups.
III.Instalação e Configuração do pgBarman
A instalação pode ser feita via código fonte, exigindo a criação de usuários e grupos do sistema (ex: groupadd -g 105 barman
). A configuração se baseia em um arquivo barman.conf
(ou em arquivos separados na pasta /etc/barman.d
), que permite definir diretórios de backup, parâmetros de conexão SSH (bidirecional, para comunicação segura entre o servidor Barman e os servidores PostgreSQL), e opções como conninfo
(para conexão com o banco de dados), backup_directory
, compression
, e bandwidth_limit
(para controle da largura de banda). A utilização de scripts pré e pós-backup também é possível.
1. Instalação do pgBarman
A instalação do pgBarman, de acordo com o documento, é feita via código fonte. O processo inicia com a criação de um grupo e um usuário específicos para o Barman, utilizando comandos como groupadd -g 105 barman
e useradd -u 102 -g barman -s /bin/bash -d /var/lib/barman
. Após isso, é necessário entrar no diretório do código fonte e executar um script Python para build (build
). Seguem-se a criação de diretórios para manuais (man1 e man5), para a configuração dos servidores PostgreSQL e para os logs do Barman. A instalação é concluída com a execução de um script Python de instalação (install
) e a cópia de um arquivo de bash completion. Finalmente, o arquivo de configuração barman.conf
é copiado para o diretório do usuário barman
e um link simbólico é criado em /etc
, garantindo o acesso do sistema ao arquivo de configuração. A instalação também abrange a criação do usuário barman
no cluster PostgreSQL utilizando o usuário postgres
, garantindo permissões adequadas para o funcionamento do pgBarman. Todo o processo está orientado para a instalação em um sistema operacional Linux.
2. Configuração da Comunicação SSH
A configuração da comunicação SSH bidirecional entre o servidor Barman e os servidores PostgreSQL é um passo crítico para o funcionamento do backup remoto. O documento enfatiza a necessidade de criar chaves SSH sem senha em ambos os servidores. Especificamente, a chave pública do servidor Barman deve ser adicionada ao arquivo authorized_keys
do usuário postgres
no servidor PostgreSQL. Reciprocamente, a chave pública do servidor PostgreSQL deve ser adicionada ao arquivo authorized_keys
do usuário barman
no servidor Barman. Esta configuração de chaves SSH garante uma comunicação segura e automatizada entre os servidores durante o processo de backup e recuperação.
3. Configuração do Diretório de Backup e Arquivo barman.conf
O pgBarman requer a definição de um diretório principal para armazenar todos os backups. Dentro deste diretório, é possível criar subpastas para cada servidor e para cada tipo de recurso (backups base e segmentos WAL). A configuração principal é feita através do arquivo barman.conf
(ou arquivos separados com extensão .conf em um diretório especificado pelo parâmetro configuration_files_directory
, disponível a partir da versão 1.1.2), localizado no diretório doc
do código fonte, e que deve ser copiado para /etc/barman.conf
ou ~/.barman.conf
. O arquivo segue o formato INI padrão, com uma seção geral identificada pela etiqueta barman
. Exemplos de parâmetros configurados no arquivo incluem conninfo
(string de conexão PostgreSQL), backup_directory
, basebackups_directory
, wals_directory
, tablespace_bandwidth_limit
, archive_command
, e o parâmetro compression
que permite configurar o tipo de compressão (gzip, bzip2, ou customizada). O arquivo /etc/barman.d/pg.conf
é mencionado como exemplo de um arquivo de configuração para um servidor específico, indicando a possibilidade de configurações individuais por servidor. A correta configuração destes parâmetros é fundamental para o bom funcionamento do sistema de backup.
IV.Uso do pgBarman Backups e Restauração
O pgBarman permite realizar backups e identifica cada um através de um Backup ID, que pode ser referenciado por apelidos (desde a versão 1.1.12). A recuperação pode ser feita localmente ou remotamente, com suporte a PITR, permitindo restaurar o banco de dados para um ponto específico no tempo. Para a recuperação remota, utiliza-se o comando barman recover --remote-ssh-command
. A ferramenta auxilia DBAs durante a fase de recuperação.
1. Backup IDs e Apelidos
O pgBarman identifica cada backup com um Backup ID, gerado a partir da data e hora do início do backup. Esta nomenclatura permite a fácil identificação e localização de backups específicos. A partir da versão 1.1.12, a ferramenta introduziu a possibilidade de utilizar apelidos para identificar backups, simplificando ainda mais a sua referência. Essa funcionalidade de apelidos facilita a recuperação, permitindo que os usuários se refiram aos backups de forma mais intuitiva. Exemplo de um Backup ID é '20130721T183941', indicando a data e hora do início do backup. A utilização de Backup IDs e apelidos melhora a organização e a acessibilidade dos backups, simplificando as operações de recuperação e manutenção.
2. Restauração Completa de um Servidor
O documento descreve a restauração completa de um servidor, tanto localmente quanto remotamente. A restauração local é mencionada, mas como exemplo hipotético, pois não havia um servidor PostgreSQL instalado na máquina de backup do laboratório. Para a restauração remota, o comando barman recover --remote-ssh-command="ssh postgres@pg" pg last /var/lib/postgresql/9.2/data
é utilizado. Este comando especifica o comando SSH para conexão remota (ssh postgres@pg
), o nome do servidor (pg
), o backup a ser restaurado (last
), e o diretório de destino (/var/lib/postgresql/9.2/data
). O processo de restauração inclui a cópia do backup base e dos segmentos WAL necessários. O comando archive_command
foi definido como 'false' em um exemplo para evitar perda de dados. A recuperação remota também suporta Point-in-Time Recovery (PITR), permitindo especificar um tempo alvo para a recuperação utilizando o parâmetro --target-time
.
3. Checagem de Diagnóstico e Limitação de Largura de Banda
A ferramenta permite a checagem de diagnóstico da conexão com um servidor PostgreSQL antes de realizar o backup. Isso ajuda a garantir que a conexão esteja funcionando corretamente antes de iniciar o processo de backup. A partir da versão 1.2.1, é possível limitar o uso de largura de banda, tanto globalmente quanto por servidor, usando o parâmetro bandwidth_limit
. Este parâmetro aceita uma lista de pares nome-tablespace/limite (em kb/s), permitindo controlar o consumo de largura de banda durante o backup, especialmente útil em ambientes com restrições de rede. O comando barman cron
é mencionado como uma forma automatizada para processar segmentos de xlog, sugerindo a integração com rotinas de cron para execução regular de tarefas de manutenção e backup. A combinação dessas funcionalidades garante que o processo de backup seja eficiente e seguro, mesmo em ambientes com recursos limitados ou restrições de rede.
V.Manutenção e Políticas de Retenção
O pgBarman oferece funcionalidades de manutenção, incluindo compressão de arquivos WAL e aplicação de políticas de retenção. Estas políticas podem ser baseadas em redundância (número mínimo de backups) ou em uma janela de recuperação (definindo um período de tempo). A redundância mínima de segurança e a compressão (gzip) são importantes para proteger contra perdas de dados acidentais, sendo configurações configuráveis. O comando barman cron
automatiza essas tarefas.
1. Compressão de WAL e Manutenção
O pgBarman realiza operações de manutenção que incluem a compressão dos arquivos WAL e sua movimentação do diretório de entrada (incoming
) para o diretório de arquivamento (wal
). A compressão é configurada no arquivo de configuração, podendo ser global ou por servidor, e utiliza o parâmetro compression
que aceita gzip (requer o programa gzip), bzip2, ou um método customizado. O comando barman cron
automatiza essa tarefa, comprimindo os arquivos WAL e aplicando as políticas de retenção. Este processo de manutenção regular garante que o espaço de armazenamento seja otimizado e que os backups sejam mantidos de forma organizada e eficiente, prevenindo a perda de dados. O processo de compressão é um componente essencial para a otimização do espaço de armazenamento e a gestão eficiente dos backups.
2. Redundância Mínima de Segurança e Políticas de Retenção
A partir da versão 1.2.0, o pgBarman permite definir uma redundância mínima de backups a serem mantidos, utilizando o parâmetro minimum_redundancy
(padrão 0). Essa funcionalidade atua como uma proteção extra contra a remoção acidental de backups, garantindo que um número mínimo de backups esteja sempre disponível. A ferramenta também suporta políticas de retenção para backups, que podem ser definidas pelo usuário para determinar quanto tempo os backups devem ser mantidos. As políticas de retenção podem ser baseadas em redundância (número de backups a serem mantidos) ou em uma janela de recuperação (período de tempo). No caso de políticas baseadas em redundância, backups marcados como 'OBSOLETE' são passíveis de exclusão, enquanto políticas baseadas em janela de recuperação garantem a retenção de backups e arquivos WAL por um determinado período (dias, semanas ou meses). A sintaxe geral para configurar políticas de retenção é: retention_policy = {REDUNDANCY value | RECOVERY WINDOW OF value {DAYS | WEEKS | MONTHS}}
.