Configure o pgBackRest para o AlloyDB Omni

Selecione uma versão da documentação:

Esta página mostra-lhe como proteger os seus dados configurando o AlloyDB Omni para funcionar com o pgBackRest, um servidor de cópias de segurança de bases de dados de código aberto. Para uma vista geral das soluções de cópia de segurança disponíveis, consulte o artigo Faça uma cópia de segurança e restaure o AlloyDB Omni.

O pgBackRest é um utilitário de cópia de segurança e restauro flexível para o PostgreSQL. Uma vez que o AlloyDB Omni é compatível com o PostgreSQL, pode usar o pgBackRest para proteger os seus dados do AlloyDB Omni com cópias de segurança manuais, agendadas e contínuas.

O pgBackRest escreve os respetivos dados de cópia de segurança em repositórios locais, remotos ou baseados na nuvem. Depois de estabelecer, pelo menos, um repositório, pode usar o pgBackRest para restaurar os seus dados do AlloyDB Omni através de vários métodos, incluindo a recuperação num ponto específico no tempo (PITR).

O AlloyDB Omni inclui o pgBackRest no respetivo contentor Docker. Isto significa que pode usar o pgBackRest para fazer uma cópia de segurança e restaurar os seus dados do AlloyDB Omni sem ter de instalar software adicional.

Para mais informações sobre o pgBackRest, consulte o respetivo manual do utilizador.

Antes de começar

Antes de configurar o AlloyDB Omni para funcionar com o pgBackrest, tem de ter o AlloyDB Omni instalado e em execução num servidor que controla.

Uma nota sobre os caminhos do sistema de ficheiros

O software pgBackRest incluído no AlloyDB Omni é executado no mesmo contentor do Docker que o AlloyDB Omni. Por este motivo, todos os caminhos do sistema de ficheiros que fornece ao pgBackRest através do respetivo ficheiro de configuração ou como argumentos da linha de comandos são localizações no sistema de ficheiros do contentor e não no sistema de ficheiros da sua máquina anfitriã.

Muitos dos comandos e exemplos nesta página referem-se ao seu diretório de dados como /mnt/disks/pgsql, independentemente da localização do seu diretório de dados no sistema anfitrião. Isto deve-se ao facto de o AlloyDB Omni montar o seu diretório de dados em /mnt/disks/pgsql no respetivo sistema de ficheiros em contentores. Como resultado, pode usar o diretório de dados como uma localização para armazenar a configuração e os repositórios do pgBackRest sem configuração adicional.

Se quiser configurar o pgBackRest contentorizado para ler ou escrever em diretórios no sistema de ficheiros da sua máquina anfitriã fora do diretório de dados do AlloyDB Omni, tem de disponibilizar estes diretórios ao contentor.

Configuração básica com cópias de segurança locais

Os passos nesta secção explicam uma configuração básica do pgBackRest, incluindo um ficheiro de configuração curto que direciona o pgBackRest para escrever dados de cópia de segurança contínuos num subdiretório do diretório de dados do AlloyDB Omni.

Uma vez que o pgBackRest é um produto de terceiros flexível compatível com o AlloyDB Omni, pode modificar qualquer um destes passos conforme adequado às suas próprias necessidades e preferências. Se alterar quaisquer caminhos do sistema de ficheiros, lembre-se de que têm de estar visíveis para o contentor; consulte Uma nota sobre os caminhos do sistema de ficheiros.

Configure a autenticação de soquete Unix fidedigna

Permitir que a máquina anfitriã do AlloyDB Omni autentique o utilizador postgres do servidor de base de dados sem exigir uma palavra-passe. Isto simplifica os passos subsequentes.

  1. Adicione a seguinte linha ao ficheiro /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

Crie e configure um repositório de cópias de segurança

O ficheiro de configuração criado nesta secção é um exemplo que permite uma configuração mínima para uma cópia de segurança contínua armazenada localmente. Pode modificar este ficheiro da forma que melhor se adequar às suas necessidades. Para mais informações, consulte o artigo Configure a secção 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 ficheiros para o diretório de dados, por exemplo, /home/$USER/alloydb-data.

  2. Crie um ficheiro com o nome pgbackrest.conf no diretório de dados e copie o seguinte conteúdo para o mesmo:

    # 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 a localização da cópia de segurança com o comando pgbackrest stanza-create:

    docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create

Configure a base de dados para cópias de segurança contínuas

  1. Para ativar as cópias de segurança contínuas, 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

Execute comandos pgBackRest

A conclusão dos passos na secção anterior configura o pgBackRest para funcionar com o seu servidor AlloyDB Omni. Para verificar o estado da cópia de segurança, criar cópias de segurança manuais e realizar outras tarefas, consulte a referência de comandos.

Como prática recomendada, execute os comandos pgBackRest diretamente a partir da máquina anfitriã na qual o contentor do AlloyDB Omni está instalado, através do comando docker exec. Por exemplo, para criar uma cópia de segurança manual, use o comando pgbackrest backup. Modifique-o para que seja executado num comando docker exec e faça referência ao ficheiro de configuração que criou 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 é sempre a localização do diretório de dados no sistema de ficheiros do contentor do AlloyDB Omni. Se seguiu os passos na secção anterior, o diretório de dados contém o ficheiro pgbackrest.conf de que os comandos do pgBackRest precisam para serem executados corretamente. Para mais informações, consulte o artigo Uma nota sobre os caminhos do sistema de ficheiros.

Também pode usar variáveis de ambiente para definir a localização do ficheiro de configuração do pgBackRest. Para mais informações, consulte a opção de caminho de configuração.

Configure cópias de segurança agendadas

Para configurar cópias de segurança agendadas, crie uma tarefa cron que execute o comando pgbackrest backup com a frequência necessária. Para mais informações, consulte o artigo Agende uma cópia de segurança.

Configuração personalizada e cópias de segurança remotas

Depois de ter uma configuração básica a funcionar, pode ajustar o ficheiro de configuração de acordo com as suas necessidades e preferências através das opções documentadas na referência de configuração do pgBackRest.

Isto inclui a especificação de repositórios de cópias de segurança adicionais localizados em máquinas remotas ou na nuvem. Se definir vários repositórios, o pgBackRest escreve simultaneamente em todos eles como ação de cópia de segurança predefinida.

Por exemplo, o pgBackRest suporta a utilização de um contentor do Cloud Storage como um repositório de cópias de segurança, com várias opções de configuração relacionadas. A secção seguinte demonstra uma forma de usar estas opções.

Um exemplo de configuração com o Cloud Storage

Os passos nesta secção baseiam-se no ficheiro de configuração apresentado no artigo Configuração básica com cópias de segurança locais. Estas modificações ao ficheiro definem um segundo repositório de cópias de segurança num contentor do Cloud Storage, acedido através do Identity and Access Management (IAM).

O estilo de autenticação automática neste exemplo requer que um cluster do AlloyDB Omni seja executado numa instância de VM do Compute Engine. Se não executar o AlloyDB Omni numa instância de VM do Compute Engine, pode continuar a fazer uma cópia de segurança para um contentor do Cloud Storage através de outro método de autenticação, como uma Google Cloud chave de conta de serviço guardada no sistema de ficheiros local.

Para estender o ficheiro de configuração anterior para definir um repositório pgBackRest baseado no Cloud Storage, siga estes passos:

  1. Configure as autorizações do contentor para permitir que a conta de serviço associada à sua instância de VM escreva no contentor. Isto requer a função de IAM de utilizador do objeto de armazenamento definida nessa conta de serviço.

  2. Adicione estas linhas ao seu ficheiro 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 contentor do Cloud Storage no qual quer que o pgBackRest armazene as cópias de segurança.

  3. Inicialize a localização da cópia de segurança baseada na nuvem com 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 cópias de segurança no seu contentor do Cloud Storage com o comando pgbackrest stanza-create, o pgBackRest faz cópias de segurança em duas localizações:

  • A localização no sistema de ficheiros local, definida noutro local no ficheiro de configuração como repo1-path.

  • O contentor do Cloud Storage, definido através das diretivas de configuração repo2- configuradas por este exemplo.

O que se segue?