为 AlloyDB Omni 设置 Barman

本页介绍了如何配置 AlloyDB Omni 与开源数据库备份服务器 Barman 搭配使用,以保护您的数据。

您可以使用与 PostgreSQL 兼容的任何数据库备份技术来保护 AlloyDB Omni 数据。例如,您可以配置 AlloyDB Omni 以允许来自您控制的 Barman 服务器的连接。这样,Barman 服务器就可以持续备份存储在 AlloyDB Omni 服务器中的数据。

将 Barman 和 AlloyDB Omni 服务器配置为协同工作后,您可以随后运行 Barman 命令来执行各种数据保护和灾难恢复任务,包括:

  • 创建数据的按需备份。
  • 设置将数据更改同步流式传输到备用服务器的 WAL。
  • 从特定备份恢复。
  • 执行时间点恢复。

如需详细了解 Barman 的运作方式,请参阅 Barman 手册

准备工作

在将 AlloyDB Omni 配置为与 Barman 搭配使用之前,您需要满足以下条件:

配置 AlloyDB Omni 以与 Barman 搭配使用

如需准备 AlloyDB Omni 服务器以与 Barman 搭配使用,请在安装了 AlloyDB Omni 的服务器上运行以下命令。

  1. 创建具有适当权限的 barman 数据库用户:

    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;
    "

    CONTAINER_NAME 替换为您在安装 AlloyDB Omni 容器时为其分配的名称。

    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;
    "

    CONTAINER_NAME 替换为您在安装 AlloyDB Omni 容器时为其分配的名称。

  2. DATA_DIR/pg_hba.conf 文件中,将以下代码行添加到文件中现有的 host all all all scram-sha-256之前

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

    替换以下内容:

    • DATA_DIR:用于 AlloyDB Omni 数据目录的文件系统路径。

    • BARMAN_IP:Barman 服务器的 IP 地址。

    • AUTHN_METHOD:AlloyDB for PostgreSQL 服务器预期 Barman 服务器采用的 PostgreSQL 身份验证方法。我们建议使用以下值之一:

      • 如需允许 Barman 服务器在不使用密码的情况下进行身份验证,请使用 trust

      • 如需要求 Barman 服务器提供密码,请使用 scram-sha-256

  3. 将以下代码行添加到 DATA_DIR/postgresql.conf 文件中:

    archive_command='/bin/true'
    archive_mode=on
    listen_addresses='*'
    wal_level='replica'
    
  4. 重启 AlloyDB Omni 服务:

    Docker

    docker restart CONTAINER_NAME

    Podman

    podman restart CONTAINER_NAME

    CONTAINER_NAME 替换为您在安装 AlloyDB Omni 容器时为其分配的名称。

  5. 通过运行以下命令确认所有必要参数均已正确设置:

    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;"

    输出如下所示:

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

设置 Barman 备用服务器

如需设置和配置 Barman 以与 AlloyDB Omni 服务器搭配使用,请在 Barman 服务器上运行以下命令。

  1. 验证流式复制连接是否有效:

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

    输出类似于以下内容:

          systemid       | timeline |  xlogpos   | dbname
    ---------------------+----------+------------+--------
     7265722823667040273 |        1 | 0/1F0AFCD0 |
    (1 row)
    
  2. 确保 Barman 可以以 barman 数据库用户身份连接到 AlloyDB Omni 服务器。

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

    DATABASE_IP 替换为 AlloyDB Omni 服务器的 IP 地址。

    输出类似于以下内容:

    Connected as: barman
    
  3. 根据您的需求和偏好设置配置 Barman 备份服务器

    您的配置必须包含以下设置:

    • 设置 conninfo,以 barman 用户身份连接到 AlloyDB Omni postgres 数据库。
    • streaming_conninfo 设置为使用 streaming_barman 用户。
    • 根据 Barman 文档中的说明,配置启用 WAL 流式传输所需的其他指令。

    以下最小但完整的示例修改了 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
    

    替换以下内容:

    • CONFIGURATION_TAG:用于在运行 barman 命令时标识此服务器配置的短标记,例如 omni

    • DATABASE_IP:AlloyDB Omni 服务器的 IP 地址。

  4. 切换到 barman 用户。

    sudo su - barman
  5. 使用 barman receive-wal 命令创建复制槽,然后开始从数据库服务器接收 WAL 数据流:

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

    CONFIGURATION_TAG 替换为您在上一步中选择的配置代码。

Barman 现在已配置为与您的 AlloyDB Omni 服务器搭配使用。如需检查复制状态、创建手动备份和执行其他任务,请参阅常规命令

例如,如需创建手动备份,请运行 barman backup 命令

后续步骤