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.
Adicione a seguinte linha ao ficheiro
/var/alloydb/config/pg_hba.conf
:local all postgres trust
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.
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
.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
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
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;"
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:
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.
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.
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.