Os clusters ativados para TDE oferecem suporte a backups e restaurações transparentes usando pgBackRest, e não é necessário realizar outras etapas. Para mais informações, consulte Criar um cluster com TDE.
Para informações sobre o Kubernetes, consulte Fazer backup e restauração no Kubernetes.
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, conclua os seguintes pré-requisitos:
- Instale e execute o AlloyDB Omni em um servidor que você controla.
- Configurar o repositório de dados persistente para sua instância do AlloyDB Omni.
Configuração básica com backups locais
As etapas desta seção orientam você em uma configuração básica do pgBackRest. As configurações básicas não ativam backups programados. Para mais informações, consulte Configurar backups programados.
Como o pgBackRest é um produto de terceiros flexível e compatível com o AlloyDB Omni, é possível modificar qualquer uma dessas etapas conforme apropriado para suas próprias necessidades e preferências.
Montar um volume de backup no contêiner
Para fins de organização, recomendamos que você crie e monte um volume separado para backups do pgBackRest. Para configurar um novo volume, siga estas etapas:
Se o contêiner estiver em execução, pare e remova-o.
Docker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAMEDocker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAMESubstitua a seguinte variável:
CONTAINER_NAME: nome usado para o contêiner.
Crie um diretório de backup no sistema de arquivos do contêiner.
Docker
mkdir -p BACKUP_DIR
Docker
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Substitua a seguinte variável:
BACKUP_DIR: diretório do host em que os backups serão armazenados.
Recrie o contêiner com o novo volume de backups.
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.NEW_PASSWORD: senha atribuída ao usuáriopostgresdo novo contêiner após a criação. ONEW_PASSWORDsó vai definir uma nova senha quandoDATA_DIRfor um novo local.DATA_DIR: caminho do diretório do host em que seus dados são armazenados.BACKUP_DIR: diretório do host em que os backups serão armazenados.HOST_PORT: porta TCP na máquina host em que o contêiner vai publicar a própria porta5432. Para usar a porta padrão do PostgreSQL na máquina host também, especifique5432.
Faça com que o diretório de backups no contêiner possa ser lido por
postgres.Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Substitua a seguinte variável:
CONTAINER_NAME: nome usado para o contêiner.
Configurar backups locais
O pgBackRest cria subdiretórios para cada backup feito e inclui um arquivo de manifesto de texto simples.
O pgBackRest usa o termo stanza para se referir à configuração de um cluster de banco de dados PostgreSQL. O nome da estrofe é arbitrário e não precisa corresponder ao servidor host, ao cluster do PostgreSQL ou ao nome do banco de dados. A documentação do pgBackRest sugere nomear a estrofe de acordo com a função do cluster.
O repositório é onde os backups são gravados. O pgBackRest permite gravar em mais de um repositório em uma determinada estrofe. A maioria dos parâmetros de configuração relacionados a
repositórios é indexada com um valor numérico. Por exemplo, repo1- Os parâmetros relacionados a clusters do PostgreSQL também são indexados de forma independente. Por exemplo, os parâmetros específicos do primeiro cluster do PostgreSQL em uma stanza são prefixados com pg1-.
O pgBackRest usa um arquivo de configuração, chamado pgbackrest.conf, para armazenar
parâmetros globais e específicos de stanza.
Para criar e inicializar um arquivo de configuração para fazer backup do
cluster do AlloyDB Omni, crie o arquivo pgbackrest.conf no
diretório de backups do host que você criou em
Montar um volume de backup no contêiner ou Criar um diretório de backup.
[global]
# Paths (all mandatory):
repo1-path=/var/lib/postgresql/backups
spool-path=/var/lib/postgresql/backups/spool
lock-path=/var/lib/postgresql/backups
# 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/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=/tmp
pg1-path=/var/lib/postgresql/data
Alguns parâmetros são obrigatórios, mas outros podem ser ajustados para atender às suas necessidades específicas, como:
repo1-path: local do diretório em que os backups são gravados. Recomendamos um local visível para o servidor host e o contêiner.log-path: local do diretório em que os arquivos de registro são gravados. Se você quiser gravar os arquivos de registro em um local separado, não misturado com os próprios backups, ajuste esse parâmetro.repo1-retention-full: Número de backups completos a serem retidos.repo1-retention-full-type: se a retenção é medida por contagem ou período (dias).repo1-retention-diff: número de backups diferenciais a serem mantidos.
Outras configurações de parâmetros não críticas, mas recomendadas, compatíveis com o AlloyDB Omni no arquivo de configuração incluem:
log-level-console: nível de geração de registros gravado na tela (STDOUT) ao executar comandos pgBackup. É possível ajustar isso para atender às suas necessidades no arquivo de configuração ou substituir esse valor com o argumento de linha de comando--log-level-console. O padrão éwarn.start-fast: força um checkpoint para iniciar os backups rapidamente. O padrão én.archive-async: envie arquivos de segmento do WAL de forma assíncrona para melhorar o desempenho. O padrão én.process-max: número máximo de processos a serem usados para compactação e transferência. Normalmente, isso é definido comomax_cpu/4em um cluster principal oumax_cpu/2em um cluster em espera. O padrão é1;compress-type: algoritmo de compactação a ser usado. O padrão égz.
Há muitos outros parâmetros de configuração do pgBackRest que podem ser ajustados. Esta documentação aborda apenas os parâmetros obrigatórios para a configuração padrão do AlloyDB Omni e algumas configurações de parâmetros recomendadas. Para ver a lista completa de parâmetros de configuração, consulte a documentação on-line Referência de configuração do pgBackRest.
Depois de configurar o pgBackRest, os repositórios de destino em que os backups são gravados precisam ser inicializados com a criação da estrofe, que usa os parâmetros definidos no arquivo de configuração.
Para configurar o banco de dados para backups, siga estas etapas:
Crie a estrofe usando o comando
stanza-create.Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Substitua a seguinte variável:
CONTAINER_NAME: nome usado para o contêiner.
Configure o banco de dados para backups.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.
Reinicie o contêiner.
Docker
docker restart CONTAINER_NAME
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.
Valide a configuração de backup.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.
Faça uma verificação do pgBackRest.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.
Fazer um backup
Realizar um backup completo.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.
Realize um backup diferencial.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.
Backups de relatórios.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Substitua as seguintes variáveis:
CONTAINER_NAME: nome usado para o contêiner.
Configurar backups programados
Para configurar backups programados, crie um cron job 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 é compatível com o uso de 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.
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 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 será possível fazer backup em um bucket do Cloud Storage usando outro método de autenticação, como uma chave de 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 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.
Adicione estas linhas à seção
[global]do arquivopgbackrest.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=PATH_IN_BUCKET # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=countSubstitua a seguinte variável:
BUCKET_NAME: nome do bucket do Cloud Storage em que você quer que o pgBackRest armazene os backups.PATH_IN_BUCKET: caminho do diretório no 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
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Substitua a seguinte variável:
CONTAINER_NAME: nome usado para o contêiner.
Depois de inicializar o repositório de backup no bucket do Cloud Storage
usando o comando pgbackrest stanza-create, o pgBackRest pode fazer backup em dois
locais:
Localização no sistema de arquivos local, definida em outro lugar no arquivo de configuração como
repo1-path. Esse é o local padrão quando--reponão é especificado no comandopgbackrest.Bucket do Cloud Storage, definido usando as diretivas de configuração
repo2-gcs-bucketdefinidas por este exemplo. Para usar o bucket do Cloud Storage, especifique--repo=2no comandopgbackrest.