Fazer backup e restaurar o RPM do AlloyDB Omni para um armazenamento compatível com S3 usando o pgBackRest

1. Introdução

Este codelab mostra como configurar o pgBackRest para fazer backup e restaurar uma implantação RPM do AlloyDB Omni usando o armazenamento de objetos compatível com S3.

Observação:neste codelab, você implanta um binário independente do MinIO na VM para atuar como um endpoint de armazenamento local e leve compatível com o S3 para fins de tutorial e teste. Para cargas de trabalho de produção, sempre use uma solução de armazenamento compatível com S3 ou armazenamento de objetos na nuvem que seja compatível e tenha manutenção ativa.

Pré-requisitos

  • Acesso a um projeto do Google Cloud e ao Cloud Shell no Cloud Console.
  • SDK Google Cloud (gcloud) instalado e configurado.

O que você vai aprender

  • Como configurar uma VM do Compute Engine para RPM do AlloyDB Omni.
  • Como configurar um servidor local de armazenamento de objetos compatível com S3 na VM.
  • Como configurar o pgBackRest para usar o armazenamento de objetos compatível com S3 como um repositório de backup.
  • Como realizar, listar e verificar backups.
  • Como restaurar dados de um backup.

O que é necessário

  • Receba um link de URL para os RPMs do AlloyDB Omni. Os links são enviados para seu e-mail, que inclui o servidor de URL do repositório. Inicialize a seguinte variável de ambiente para manter o URL pronto para uso durante o codelab.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • Um terminal em funcionamento com acesso ao Google Cloud. Você pode usar o Cloud Shell para essa finalidade.

2. Configuração e requisitos

Configuração do projeto

Criar um projeto do Google Cloud

  1. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto na nuvem do Google Cloud.
  2. Verifique se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.

Inicie o Cloud Shell

Embora seja possível operar o Google Cloud remotamente em um laptop, neste codelab você vai usar o Google Cloud Shell, um ambiente de linha de comando executado na nuvem.

Ícone para ativar o Cloud Shell

  1. Abra o console do Google Cloud e clique no ícone do Cloud Shell na barra de ferramentas superior à direita.Também é possível abrir o Cloud Shell de uma das seguintes maneiras:
    • Se você estiver usando o console do Google Cloud, pressione G e depois S.
    • Clique neste link.

Normalmente, leva alguns instantes para provisionar e se conectar ao ambiente. Quando essa operação for concluída, você verá algo semelhante a isto:

Terminal do Google Cloud Shell mostrando que o ambiente foi conectado{: width="624"}

3. Criar a VM do Compute Engine

Nesta seção, você vai criar uma única máquina virtual (VM) do Compute Engine (GCE) usando a ferramenta de linha de comando gcloud. Você usa uma imagem do Rocky Linux 9, que é totalmente compatível com os RPMs do AlloyDB Omni.

  1. Defina variáveis de ambiente para o ID do projeto, o nome da VM, o tipo de máquina, a zona e a região.
    export PROJECT="your-project-id"
    export INSTANCE_NAME="alloydb-omni-pgbackrest"
    export MACHINE_TYPE="e2-standard-4"
    export ZONE="us-central1-c"
    export REGION="us-central1"
    
  2. Faça login com o usuário da sua conta do Google Cloud e configure o projeto padrão.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Crie uma regra de firewall para permitir conexões SSH com sua VM.
    gcloud compute firewall-rules create allow-ssh-alloydb-omni \
        --project=$PROJECT \
        --direction=INGRESS \
        --action=allow \
        --rules=tcp:22 \
        --source-ranges="0.0.0.0/0"
    
  4. Como a VM é criada sem um endereço IP público, configure um Cloud Router e um gateway do Cloud NAT para permitir que a VM acesse repositórios de pacotes externos e faça o download do software necessário.
    gcloud compute routers create alloydb-omni-router \
        --project=$PROJECT \
        --network=default \
        --region=$REGION
    
    gcloud compute routers nats create alloydb-omni-nat \
        --project=$PROJECT \
        --router=alloydb-omni-router \
        --region=$REGION \
        --nat-all-subnet-ip-ranges \
        --auto-allocate-nat-external-ips
    
  5. Verifique se a rede VPC tem uma rota de gateway de Internet padrão válida. Em alguns ambientes compartilhados ou de teste, as rotas padrão são removidas ocasionalmente por scripts de limpeza. Essa rota é necessária para que o Cloud NAT encaminhe o tráfego de saída para a Internet.
    gcloud compute routes create default-internet-route \
        --project=$PROJECT \
        --network=default \
        --destination-range=0.0.0.0/0 \
        --next-hop-gateway=default-internet-gateway
    
  6. Crie a instância de VM do Compute Engine com o Rocky Linux 9 e um disco permanente equilibrado de 20 GB. Para aumentar a segurança, use a flag --no-address para que a VM não receba um endereço IP público.
    gcloud compute instances create $INSTANCE_NAME \
        --project=$PROJECT \
        --zone=$ZONE \
        --machine-type=$MACHINE_TYPE \
        --image-family=rocky-linux-9 \
        --image-project=rocky-linux-cloud \
        --boot-disk-size=20GB \
        --boot-disk-type=pd-balanced \
        --no-address
    
  7. Depois que a VM for criada, verifique o status dela.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. Configurar o armazenamento de objetos compatível com S3

Nesta seção, você se conecta à VM, prepara o ambiente e configura um servidor de armazenamento de objetos local compatível com S3 (minio) e um cliente S3 (mc) para hospedar o bucket de backup.

  1. Conecte-se à VM por SSH usando o Identity-Aware Proxy (IAP). Como a VM não tem um endereço IP público, o gcloud vai encapsular automaticamente a conexão SSH pelo IAP.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Instale o pacote policycoreutils-python-utils para que a política do SELinux possa ser configurada mais tarde, se necessário.
    sudo dnf install -y policycoreutils-python-utils
    
  3. Faça o download do binário do servidor compatível com S3 (minio).
    curl -L -o minio \
        https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z
    chmod +x minio
    sudo mv minio /usr/local/bin/
    
  4. Crie um diretório de dados para o servidor de armazenamento de objetos.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. Inicie o servidor compatível com S3 em segundo plano com credenciais de exemplo. A chave secreta precisa ter pelo menos oito caracteres.
    export MINIO_ROOT_USER="s3admin"
    export MINIO_ROOT_PASSWORD="s3password"
    
    nohup sudo env MINIO_ROOT_USER="$MINIO_ROOT_USER" \
        MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \
        /usr/local/bin/minio server /var/lib/s3-storage/data \
        --console-address ":9001" \
        > s3-server.log 2>&1 &
    
  6. Verifique se o servidor compatível com S3 está em execução.
    ps aux | grep minio
    
  7. Faça o download e instale o cliente do S3 (mc) para gerenciar buckets.
    curl -L -o mc \
        https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z
    chmod +x mc
    sudo mv mc /usr/local/bin/
    
  8. Configure o alias do cliente do S3 (s3repo) e crie um bucket chamado alloydb-backups.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. Instalar o AlloyDB Omni

Nesta seção, você vai instalar e configurar o AlloyDB Omni.

  1. Defina variáveis de ambiente na VM para o diretório de dados, o URL do repositório do AlloyDB Omni e uma senha forte para o usuário administrador postgres do PostgreSQL. Substitua o URL pelo que você recebeu no formulário de inscrição.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Observação:o envio de senhas usando variáveis de ambiente na linha de comando (por exemplo, PGPASSWORD=$PGPASSWORD) é usado aqui para simplificar o codelab, mas pode expor a senha em listas de processos. Em produção, use métodos mais seguros, como um arquivo .pgpass ou um gerenciador de secrets.
  2. Crie o diretório de dados em que o AlloyDB Omni vai armazenar os arquivos de banco de dados.
    sudo mkdir -p $PGDATA
    
  3. Configure o repositório YUM na VM criando o arquivo de configuração do repositório.
    sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF
    [alloydbomni]
    name=alloydbomni
    baseurl=$ALLOYDB_OMNI_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=1
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
  4. Atualize o cache do YUM.
    sudo yum makecache
    
  5. Instale a versão 18 do pacote RPM do AlloyDB Omni.
    sudo dnf install -y alloydbomni18
    
  6. Inicialize a instância de banco de dados do AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Desative temporariamente o modo de imposição do SELinux para facilitar a configuração, de acordo com as práticas padrão do codelab.
    sudo setenforce 0
    
  8. Prepare a instância de banco de dados do AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. Ative e inicie o serviço systemd do AlloyDB Omni.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. Verifique se o serviço do AlloyDB Omni está ativo e em execução.
    sudo systemctl status alloydbomni18
    

6. Configurar o pgBackRest

Nesta seção, você vai instalar o pgBackRest no repositório comum do AlloyDB Omni, configurar o /etc/pgbackrest/pgbackrest.conf para usar seu bucket de armazenamento de objetos compatível com S3 como um repositório de backup e ativar o arquivamento de WAL no AlloyDB Omni.

  1. Defina uma variável de ambiente na VM para o URL do repositório comum do AlloyDB Omni. Substitua o URL pelo que você recebeu no formulário de inscrição.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. Configure o repositório YUM do pgBackRest e instale pgbackrest-2.58.0.
    sudo tee /etc/yum.repos.d/pgbackrest.repo <<EOF
    [pgbackrest]
    name=Google Alloydb Omni Orchestrator
    baseurl=$ALLOYDB_OMNI_COMMON_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
    sudo dnf install -y pgbackrest-2.58.0
    
  3. Crie os diretórios de spool e de registros para o pgBackRest e atribua a propriedade ao usuário postgres.
    sudo mkdir -p /var/log/pgbackrest
    sudo mkdir -p /var/lib/pgbackrest
    
    sudo chown -R postgres:postgres /var/log/pgbackrest
    sudo chown -R postgres:postgres /var/lib/pgbackrest
    
  4. Crie /etc/pgbackrest/pgbackrest.conf e configure permissões de arquivo restritas.
    sudo mkdir -p /etc/pgbackrest/conf.d
    
    sudo tee /etc/pgbackrest/pgbackrest.conf <<EOF
    [global]
    spool-path=/var/lib/pgbackrest
    lock-path=/var/lib/pgbackrest
    
    # S3 Repository details
    repo1-type=s3
    repo1-s3-endpoint=http://localhost:9000
    repo1-s3-bucket=alloydb-backups
    repo1-s3-key=s3admin
    repo1-s3-key-secret=s3password
    repo1-s3-region=us-east-1
    repo1-s3-uri-style=path
    repo1-path=/pgbackrest
    
    # Retention policy
    repo1-retention-full=3
    repo1-retention-full-type=count
    repo1-retention-diff=16
    
    # Force immediate checkpoint during backup start
    start-fast=y
    
    # Logging
    log-path=/var/log/pgbackrest
    log-level-console=info
    log-level-file=info
    
    # Compression
    compress-type=zst
    
    # Asynchronous WAL archiving
    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=$PGDATA
    EOF
    
    sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
    sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
    
  5. Inicialize a estrofe pgBackRest como o usuário postgres.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Confirme se stanza-create command end: completed successfully aparece na saída.
  6. Configure os parâmetros de arquivamento do AlloyDB Omni usando psql.
    sudo -u postgres /usr/lib/postgresql/18/bin/psql \
        -c "ALTER SYSTEM SET archive_mode = 'on';" \
        -c "ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=omni archive-push %p';" \
        -c "ALTER SYSTEM SET wal_level = 'replica';" \
        -c "ALTER SYSTEM SET max_wal_senders = 10;"
    
  7. Reinicie o serviço do AlloyDB Omni para aplicar as mudanças de arquivamento.
    sudo systemctl restart alloydbomni18
    
  8. Verifique a integridade e a conectividade da configuração do pgBackRest.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Confirme se check command end: completed successfully aparece na saída.

7. Fazer backup

Nesta seção, você vai usar o pgBackRest para fazer um backup completo e um backup diferencial do seu banco de dados do AlloyDB Omni para um armazenamento de objetos compatível com S3.

  1. Acione um backup completo usando pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. Acione um backup diferencial usando pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Observação:outros tipos de backup compatíveis incluem incr (incremental).

8. Listar e verificar backups

Nesta seção, você vai listar os backups e verificar se eles foram concluídos com êxito.

  1. Liste os backups usando o comando pgbackrest info.
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Confirme se a saída mostra status: ok junto com as informações de backup para cada comando executado:
    • Backup completo : full backup: F (por exemplo, 20260908-093545F)
    • Backup diferencial : diff backup: F_D (por exemplo, 20260908-093545F_20260908-094016D)
  2. Verifique os arquivos de backup armazenados no bucket usando o cliente S3 (mc).
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    Você vai ver backup, archive e stanza.info na saída.

9. Restaurar dados do backup

Nesta seção, você vai interromper o serviço de banco de dados do AlloyDB Omni e restaurar os dados de um backup específico usando pgbackrest.

Atenção:a restauração interrompe o banco de dados e substitui todos os dados dele.

  1. Defina uma variável de ambiente para o ID do backup que você quer restaurar. Substitua o valor pelo ID do backup mostrado na saída pgbackrest info.
    export BACKUPID="20260908-093545F"
    
  2. Pare o serviço do AlloyDB Omni e verifique se ele está inativo.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Confirme se a saída mostra Active: inactive.
  3. Execute pgbackrest restore com a opção --delta para restaurar o banco de dados do backup selecionado.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Confirme se restore command end: completed successfully aparece na saída.
  4. Inicie o serviço do AlloyDB Omni e verifique se ele está ativo e em execução.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Confirme se a saída mostra Active: active (running).

10. Revisão dos dados e pesquisa

Depois de concluir o codelab, limpe os recursos do Google Cloud para evitar cobranças indesejadas.

  1. Desconecte-se da sessão SSH na VM para voltar ao terminal local do Cloud Shell.
    exit
    
  2. Exclua a instância de VM do Compute Engine.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. Exclua a regra de firewall criada para acesso SSH.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Exclua o gateway do Cloud NAT e o Cloud Router.
    gcloud compute routers nats delete alloydb-omni-nat --router=alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    gcloud compute routers delete alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    
  5. Exclua a rota personalizada.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Parabéns

Parabéns por concluir o codelab! Você configurou o pgBackRest para fazer backup e restaurar uma implantação RPM do AlloyDB Omni usando o armazenamento de objetos compatível com S3.

O que vimos

  • Como configurar uma VM do Compute Engine para RPM do AlloyDB Omni.
  • Como configurar um bucket de armazenamento de objetos compatível com S3.
  • Como configurar o pgBackRest com um repositório compatível com S3.
  • Como realizar, listar e verificar backups completos e diferenciais.
  • Como restaurar dados de um backup usando o pgBackRest.

Para mais informações, consulte a Visão geral do AlloyDB Omni.

12. Pesquisa

Como você usará este tutorial?

Apenas leitura Leitura e exercícios