Configurar o pgBackRest para o AlloyDB Omni

Selecione uma versão da documentação:

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

O pgBackRest é um utilitário flexível de backup e restauração para PostgreSQL. Como o AlloyDB Omni é compatível com o PostgreSQL, é possível usar o pgBackRest para proteger os dados do AlloyDB Omni com 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, use o pgBackRest para restaurar seus dados do AlloyDB Omni por 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 trabalhar com o pgBackrest, é necessário ter o AlloyDB Omni instalado e em execução em um servidor controlado por você.

Observação sobre 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 fornecidos 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 /mnt/disks/pgsql, independente da localização dele no sistema host. Isso acontece porque o AlloyDB Omni monta seu diretório de dados em /mnt/disks/pgsql no sistema de arquivos em contêiner. Como resultado, você pode usar o diretório de dados como um local para armazenar a configuração e os repositórios do pgBackRest sem mais configurações.

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

Configuração básica com backups locais

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

Como o pgBackRest é um produto flexível de terceiros compatível com o AlloyDB Omni, é possível modificar qualquer uma dessas etapas de acordo com suas necessidades e preferências. Se você mudar algum caminho do sistema de arquivos, lembre-se de que 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 soquete 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 subsequentes.

  1. Adicione a seguinte linha ao arquivo /var/alloydb/config/pg_hba.conf:

    local       all      postgres       trust
    
  2. Reinicie o AlloyDB Omni:

    sudo alloydb database-server stop
    sudo alloydb database-server start

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 backup contínuo armazenado localmente. É possível modificar esse arquivo de qualquer maneira que atenda às suas necessidades. Para mais informações, consulte Configurar uma estrofe de cluster.

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

    mkdir DATA_DIR/backups

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

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

    # Paths (all mandatory):
    repo1-path=/mnt/disks/pgsql/backups
    spool-path=/mnt/disks/pgsql
    lock-path=/mnt/disks/pgsql
    
    # 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=/mnt/disks/pgsql/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=/mnt/disks/pgsql
    pg1-path=/mnt/disks/pgsql/data
    
  3. Inicialize o local de backup usando o comando pgbackrest stanza-create:

    docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --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 pg-service psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni archive-push %p';" \
    -c "ALTER SYSTEM SET archive_mode=on;" \
    -c "ALTER SYSTEM SET max_wal_senders=on;" \
    -c "ALTER SYSTEM SET wal_level=replica;"
  2. Reinicie o AlloyDB Omni:

    sudo alloydb database-server stop
    sudo alloydb database-server start

Executar comandos do pgBackRest

Concluir as etapas na seção anterior configura o pgBackRest para trabalhar com seu servidor do AlloyDB Omni. Para verificar o status do backup, criar backups manuais e realizar outras tarefas, consulte Referência de comandos.

Como prática recomendada, execute comandos do pgBackRest diretamente da 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 para que ele seja executado em um comando docker exec e se refira ao arquivo de configuração criado anteriormente:

docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni --type=full backup

O valor da flag --config-path é /mnt/disks/pgsql porque esse é sempre o local do diretório de dados no sistema de arquivos do contêiner do AlloyDB Omni. Se você seguiu as etapas da seção anterior, o diretório de dados vai conter o arquivo pgbackrest.conf necessário para que os comandos do pgBackRest sejam executados corretamente. Para mais informações, consulte Uma observação sobre caminhos do sistema de arquivos.

Também é possível 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 uma tarefa cron que execute o comando pgbackrest backup com a frequência necessária. Para mais informações, consulte Programar um backup.

Configuração personalizada e backups remotos

Depois de ter uma configuração básica funcionando, ajuste o 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 gravará simultaneamente em todos eles como ação de backup padrão.

Por exemplo, o pgBackRest oferece suporte ao uso de um bucket do Cloud Storage como um 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.

Um exemplo de configuração usando o Cloud Storage

As etapas nesta seção se baseiam 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 gerenciamento de identidade e acesso (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 uma chave de conta de serviço 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 à sua instância de VM grave no bucket. Isso exige 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 os backups.

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

    docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --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