Configurar o Barman para o AlloyDB Omni

Esta página mostra como proteger seus dados configurando o AlloyDB Omni para funcionar com o Barman, um servidor de backup de banco de dados de código aberto.

É possível proteger seus dados do AlloyDB Omni usando qualquer tecnologia de backup de banco de dados compatível com o PostgreSQL. Por exemplo, é possível configurar o AlloyDB Omni para permitir conexões de um servidor do Barman que você controla. Isso permite que o servidor Barman faça backups contínuos dos dados armazenados no servidor AlloyDB Omni.

Depois de configurar os servidores Barman e AlloyDB Omni para trabalharem juntos, você pode executar comandos do Barman para realizar várias tarefas de proteção de dados e recuperação de desastres, incluindo:

  • Crie um backup sob demanda dos seus dados.
  • Configure o streaming WAL síncrono das mudanças de dados no servidor de backup.
  • Restaurar de um backup específico.
  • Faça uma restauração pontual.

Para mais informações sobre a operação do Barman, consulte o manual do Barman.

Antes de começar

Antes de configurar o AlloyDB Omni para trabalhar com o Barman, você precisa do seguinte:

Configurar o AlloyDB Omni para funcionar com o Barman

Para preparar o servidor do AlloyDB Omni para funcionar com o Barman, execute os comandos abaixo no servidor em que você instalou o AlloyDB Omni.

  1. Crie o usuário do banco de dados barman com os privilégios adequados:

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    CREATE USER barman;
    GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
    GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
    GRANT pg_read_all_settings TO barman;
    GRANT pg_read_all_stats TO barman;
    CREATE USER streaming_barman WITH REPLICATION;
    "

    Substitua CONTAINER_NAME pelo nome que você atribuiu ao contêiner AlloyDB Omni quando ele foi instalado.

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "
    CREATE USER barman;
    GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
    GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
    GRANT pg_read_all_settings TO barman;
    GRANT pg_read_all_stats TO barman;
    CREATE USER streaming_barman WITH REPLICATION;
    "

    Substitua CONTAINER_NAME pelo nome que você atribuiu ao contêiner AlloyDB Omni quando ele foi instalado.

  2. Adicione as linhas abaixo ao arquivo DATA_DIR/pg_hba.conf antes da linha host all all all scram-sha-256 que existe no arquivo:

    host all barman BARMAN_IP/32 AUTHN_METHOD
    host replication streaming_barman BARMAN_IP/32 AUTHN_METHOD
    

    Substitua:

    • DATA_DIR: o caminho do sistema de arquivos usado para o diretório de dados do AlloyDB Omni.

    • BARMAN_IP: o endereço IP do servidor Barman.

    • AUTHN_METHOD: o método de autenticação do PostgreSQL que o servidor AlloyDB para PostgreSQL espera do servidor Barman. Recomendamos um dos seguintes valores:

      • Para permitir que o servidor do Barman faça a autenticação sem uma senha, use trust.

      • Para exigir uma senha do servidor do Barman, use scram-sha-256.

  3. Adicione as seguintes linhas ao arquivo DATA_DIR/postgresql.conf:

    archive_command='/bin/true'
    archive_mode=on
    listen_addresses='*'
    wal_level='replica'
    
  4. Reinicie o serviço do AlloyDB Omni:

    Docker

    docker restart CONTAINER_NAME

    Podman

    podman restart CONTAINER_NAME

    Substitua CONTAINER_NAME pelo nome que você atribuiu ao contêiner AlloyDB Omni quando ele foi instalado.

  5. Confirme se todos os parâmetros necessários estão definidos corretamente executando o seguinte comando:

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    SELECT name, setting
       FROM pg_catalog.pg_settings
       WHERE name IN ('archive_command',
                      'archive_mode',
                      'listen_addresses',
                      'wal_level')
       ORDER BY name;"

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "
    SELECT name, setting
       FROM pg_catalog.pg_settings
       WHERE name IN ('archive_command',
                      'archive_mode',
                      'listen_addresses',
                      'wal_level')
       ORDER BY name;"

    A saída é a seguinte:

       name          |  setting
    ------------------|-----------
    archive_command   | /bin/true
    archive_mode      | on
    listen_addresses  | *
    wal_level         | replica
    (4 rows)
    

Configurar o servidor de backup do Barman

Para configurar o Barman para trabalhar com o servidor AlloyDB Omni, execute os comandos abaixo no servidor do Barman.

  1. Verifique se a conexão de replicação de streaming funciona:

    psql -h DATABASE_IP -U streaming_barman -c "IDENTIFY_SYSTEM" replication=1

    O resultado será assim:

          systemid       | timeline |  xlogpos   | dbname
    ---------------------+----------+------------+--------
     7265722823667040273 |        1 | 0/1F0AFCD0 |
    (1 row)
    
  2. Verifique se o Barman pode se conectar ao servidor do AlloyDB Omni como usuário do banco de dados barman.

    psql -t -h DATABASE_IP -U barman -d postgres -c "SELECT 'Connected as: '||current_user"

    Substitua DATABASE_IP pelo endereço IP do seu servidor AlloyDB Omni.

    O resultado será assim:

    Connected as: barman
    
  3. Configure o servidor de backup do Barman de acordo com suas necessidades e preferências.

    Sua configuração precisa incluir as seguintes configurações:

    • Defina conninfo para se conectar ao banco de dados postgres do AlloyDB Omni como o usuário barman.
    • Defina streaming_conninfo para usar o usuário streaming_barman.
    • Configure outras diretivas necessárias para ativar o streaming de WAL, conforme indicado na documentação do Barman.

    O exemplo mínimo, mas completo, a seguir modifica um exemplo de configuração de streaming da documentação do Barman:

    [CONFIGURATION_TAG]
    description = "Backup settings for my AlloyDB Omni server"
    conninfo = host=DATABASE_IP user=barman dbname=postgres
    streaming_conninfo = host=DATABASE_IP user=streaming_barman
    backup_method = postgres
    streaming_archiver = on
    slot_name = barman
    

    Substitua:

    • CONFIGURATION_TAG: uma tag curta para identificar essa configuração do servidor ao executar comandos barman, por exemplo, omni.

    • DATABASE_IP: o endereço IP do servidor do AlloyDB Omni.

  4. Mude para o usuário barman.

    sudo su - barman
  5. Use o comando barman receive-wal para criar um slot de replicação e, em seguida, começar a receber um stream WAL do servidor de banco de dados:

    barman receive-wal --create-slot CONFIGURATION_TAG
    barman receive-wal CONFIGURATION_TAG &

    Substitua CONFIGURATION_TAG pela tag de configuração escolhida na etapa anterior.

O Barman agora está configurado para funcionar com seu servidor AlloyDB Omni. Para verificar o status da replicação, criar backups manuais e realizar outras tarefas, consulte Comandos gerais.

Por exemplo, para criar um backup manual, execute o comando barman backup.

A seguir