Configurar o pgBackRest para o AlloyDB Omni

Esta página mostra como proteger seus dados configurando o AlloyDB Omni para funcionar com o pgBackRest, um servidor de backup de banco de dados de código aberto. Para ter uma visão geral das soluções de backup disponíveis, consulte Fazer backup e restaurar o AlloyDB Omni.

Consulte Fazer backup e restaurar no Kubernetes para informações baseadas no Kubernetes.

O pgBackRest é um utilitário flexível de backup e restauração para PostgreSQL. Como o AlloyDB Omni é compatível com o PostgreSQL, você pode usar o pgBackRest para proteger seus dados do AlloyDB Omni usando backups manuais, programados e contínuos.

O pgBackRest grava os dados de backup em repositórios locais, remotos ou baseados na nuvem. Depois de estabelecer pelo menos um repositório, você pode usar o pgBackRest para restaurar seus dados do AlloyDB Omni usando vários métodos, incluindo a recuperação pontual (PITR).

O AlloyDB Omni inclui o pgBackRest no contêiner do Docker. Isso significa que você pode usar o pgBackRest para fazer backup e restaurar seus dados do AlloyDB Omni sem precisar instalar nenhum software adicional.

Para mais informações sobre o pgBackRest, consulte o guia do usuário.

Antes de começar

Antes de configurar o AlloyDB Omni para funcionar com o pgBackRest, é necessário ter o AlloyDB Omni instalado e em execução em um servidor que você controla.

Observação sobre os caminhos do sistema de arquivos

O software pgBackRest incluído no AlloyDB Omni é executado no mesmo contêiner do Docker que o AlloyDB Omni. Por isso, todos os caminhos do sistema de arquivos que você fornece ao pgBackRest pelo arquivo de configuração ou como argumentos de linha de comando são locais no sistema de arquivos do contêiner, e não no sistema de arquivos da máquina host.

Muitos dos comandos e exemplos nesta página se referem ao diretório de dados como /var/lib/postgresql/data, independentemente do local do diretório de dados no sistema host. Isso ocorre porque o AlloyDB Omni monta seu diretório de dados em /var/lib/postgresql/data no sistema de arquivos contêinerizado. Como resultado, é possível usar o diretório de dados como um local para armazenar a configuração do pgBackRest e os repositórios sem mais configurações.

Se você quiser configurar o pgBackRest contêinerizado para ler ou gravar em diretórios no sistema de arquivos da máquina host fora do diretório de dados do AlloyDB Omni, deixe esses diretórios disponíveis para o contêiner.

Configuração básica com backups locais

As etapas desta seção orientam você em uma configuração básica do pgBackRest, incluindo um arquivo de configuração curto que direciona o pgBackRest a gravar dados de backup contínuos em um subdiretório do diretório de dados do AlloyDB Omni.

Como o pgBackRest é um produto terceirizado flexível compatível com o AlloyDB Omni, é possível modificar qualquer uma dessas etapas conforme necessário para atender às suas necessidades e preferências. Se você mudar os caminhos do sistema de arquivos, eles precisam estar visíveis para o contêiner. Consulte Uma observação sobre caminhos do sistema de arquivos.

Configurar a autenticação confiável de soquetes Unix

Permita que a máquina host do AlloyDB Omni autentique o usuário postgres do servidor de banco de dados sem exigir uma senha. Isso simplifica as etapas seguintes.

  1. Adicione a linha a seguir ao arquivo DATA_DIR/pg_hba.conf:

    local       all      postgres       trust
    

    Substitua DATA_DIR pelo caminho do sistema de arquivos para o diretório de dados, por exemplo, /home/$USER/alloydb-data.

  2. Reinicie o AlloyDB Omni:

    docker restart CONTAINER_NAME

    Substitua CONTAINER_NAME pelo nome atribuído ao contêiner do AlloyDB Omni quando ele foi instalado, por exemplo, my-omni.

Criar e configurar um repositório de backup

O arquivo de configuração criado nesta seção é um exemplo que permite uma configuração mínima para backups contínuos armazenados localmente. É possível modificar esse arquivo de acordo com suas necessidades. Para mais informações, consulte Configurar a stanza de cluster.

  1. Crie um subdiretório backups no diretório de dados do AlloyDB Omni:

    mkdir DATA_DIR/backups
  2. Crie um arquivo chamado pgbackrest.conf no diretório de dados e copie o seguinte conteúdo nele:

    [global]
    
    # Paths (all mandatory):
    repo1-path=/var/lib/postgresql/data/backups
    spool-path=/var/lib/postgresql/data
    lock-path=/var/lib/postgresql/data
    
    # Retention details:
    repo1-retention-full=3
    repo1-retention-full-type=count
    repo1-retention-diff=16
    
    # Force a checkpoint to start backup immediately:
    start-fast=y
    
    # Logging parameters:
    log-path=/var/lib/postgresql/data/backups
    log-level-console=info
    log-level-file=info
    
    # Recommended ZSTD compression:
    compress-type=zst
    
    # Other performance parameters:
    archive-async=y
    archive-push-queue-max=1024MB
    archive-get-queue-max=256MB
    archive-missing-retry=y
    
    [global:archive-push]
    process-max=2
    
    [global:archive-get]
    process-max=2
    
    [omni]
    pg1-user=postgres
    pg1-socket-path=/var/lib/postgresql/data
    pg1-path=/var/lib/postgresql/data/data
    
  3. Inicialize o local de backup usando o comando pgbackrest stanza-create:

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

Configurar o banco de dados para backups contínuos

  1. Para ativar os backups contínuos, execute o seguinte comando para definir vários parâmetros do PostgreSQL:

    docker exec CONTAINER_NAME psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni archive-push %p';" \
    -c "ALTER SYSTEM SET archive_mode=on;" \
    -c "ALTER SYSTEM SET max_wal_senders=10;" \
    -c "ALTER SYSTEM SET wal_level=replica;"
  2. Reinicie o AlloyDB Omni:

    docker restart CONTAINER_NAME

Executar comandos pgBackRest

A conclusão das etapas na seção anterior configura o pgBackRest para funcionar com seu servidor AlloyDB Omni. Para conferir o status do backup, criar backups manuais e realizar outras tarefas, consulte a Referência de comandos.

Como prática recomendada, execute comandos pgBackRest diretamente na máquina host em que o contêiner do AlloyDB Omni está instalado, usando o comando docker exec. Por exemplo, para criar um backup manual, use o comando pgbackrest backup. Modifique-o para que ele seja executado em um comando docker exec e se refira ao arquivo de configuração criado anteriormente:

docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup

Você também pode usar variáveis de ambiente para definir o local do arquivo de configuração do pgBackRest. Para mais informações, consulte Opção de caminho de configuração.

Configurar backups programados

Para configurar backups programados, crie um cron job que execute o comando pgbackrest backup sempre que necessário. Para mais informações, consulte Programar um backup.

Configuração personalizada e backups remotos

Depois de ter uma configuração básica funcionando, você pode ajustar seu arquivo de configuração para atender às suas necessidades e preferências usando as opções documentadas na referência de configuração do pgBackRest.

Isso inclui especificar outros repositórios de backup localizados em máquinas remotas ou na nuvem. Se você definir vários repositórios, o pgBackRest vai gravar em todos eles simultaneamente como a ação de backup padrão.

Por exemplo, o pgBackRest oferece suporte para usar um bucket do Cloud Storage como repositório de backup, com várias opções de configuração relacionadas. A seção a seguir demonstra uma maneira de usar essas opções.

Exemplo de configuração usando o Cloud Storage

As etapas desta seção são baseadas no arquivo de configuração apresentado em Configuração básica com backups locais. Essas modificações no arquivo definem um segundo repositório de backup em um bucket do Cloud Storage, acessado pelo Identity and Access Management (IAM).

O estilo de autenticação automática neste exemplo exige que um cluster do AlloyDB Omni seja executado em uma instância de VM do Compute Engine. Se você não executar o AlloyDB Omni em uma instância de VM do Compute Engine, ainda poderá fazer backup em um bucket do Cloud Storage usando outro método de autenticação, como a chave da conta de serviço do Google Cloud salva no sistema de arquivos local.

Para estender o arquivo de configuração anterior e definir um repositório pgBackRest baseado no Cloud Storage, siga estas etapas:

  1. Configure as permissões do bucket para permitir que a conta de serviço anexada à instância da VM grave no bucket. Isso requer que o papel do IAM de usuário de objetos do Storage seja definido nessa conta de serviço.

  2. Adicione estas linhas ao arquivo pgbackrest.conf:

    # Cloud Storage access details:
    repo2-type=gcs
    repo2-gcs-key-type=auto
    repo2-storage-verify-tls=n
    
    # Cloud Storage bucket and path details:
    repo2-gcs-bucket=BUCKET_NAME
    repo2-path=/pgbackrest
    
    # Cloud Storage backup retention parameters:
    repo2-retention-full=8
    repo2-retention-full-type=count
    

    Substitua BUCKET_NAME pelo nome do bucket do Cloud Storage em que você quer que o pgBackRest armazene backups.

  3. Inicialize o local de backup baseado na nuvem usando o comando pgbackrest stanza-create:

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

Depois de inicializar o repositório de backup no bucket do Cloud Storage usando o comando pgbackrest stanza-create, o pgBackRest faz backup em dois locais:

  • O local no sistema de arquivos local, definido em outro lugar no arquivo de configuração como repo1-path.

  • O bucket do Cloud Storage, definido usando as diretivas de configuração repo2- configuradas por este exemplo.

A seguir