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.
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
.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.
Crie um subdiretório
backups
no diretório de dados do AlloyDB Omni:mkdir DATA_DIR/backups
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
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
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;"
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:
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.
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.
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.