您可以使用与 PostgreSQL 兼容的任何数据库备份技术来保护 AlloyDB Omni 数据。例如,您可以将 AlloyDB Omni 配置为允许从您控制的 Barman 服务器进行连接。这使 Barman 服务器可以对存储在 AlloyDB Omni 服务器中的数据执行持续备份。
将 Barman 和 AlloyDB Omni 服务器配置为协同工作后,您可以随后运行 Barman 命令来完成各种数据保护和灾难恢复任务,包括以下这些:
- 创建数据的按需备份。
- 设置同步 WAL 流式传输,以将数据更改传输到备份服务器。
- 从特定备份恢复。
- 执行时间点恢复。
如需详细了解 Barman 的操作,请参阅 Barman 手册。
准备工作
在将 AlloyDB Omni 配置为与 Barman 配合使用之前,您需要满足以下条件:
- 在您控制的服务器上安装并运行 AlloyDB Omni。 
- 在单独的服务器上安装 Barman。您安装 Barman 的服务器必须能够通过 TCP 与 AlloyDB Omni 服务器进行通信。 
将 AlloyDB Omni 配置为与 Barman 配合使用
如需准备好 AlloyDB Omni 服务器以便与 Barman 配合使用,请在安装了 AlloyDB Omni 的服务器上运行以下命令。
- 创建具有适当权限的 - 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 容器时为其分配的名称。
- 在 - 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。
 
 
- 将以下代码行添加到 - DATA_DIR/postgresql.conf文件中:- archive_command='/bin/true' archive_mode=on listen_addresses='*' wal_level='replica'
- 重启 AlloyDB Omni 服务: - Docker- docker restart CONTAINER_NAME- Podman- podman restart CONTAINER_NAME- 将 - CONTAINER_NAME替换为您在安装 AlloyDB Omni 容器时为其分配的名称。
- 通过运行以下命令,确认所有必要参数均已正确设置: - 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 服务器上运行以下命令。
- 验证流式传输复制连接是否正常工作: - psql -h DATABASE_IP -U streaming_barman -c "IDENTIFY_SYSTEM" replication=1- 输出类似于以下内容: - systemid | timeline | xlogpos | dbname ---------------------+----------+------------+-------- 7265722823667040273 | 1 | 0/1F0AFCD0 | (1 row)
- 确保 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
- 根据自己的需求和偏好配置 Barman 备份服务器。 - 配置必须包含以下设置: - 设置 conninfo,以便以barman用户身份连接到 AlloyDB Omnipostgres数据库。
- 将 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 地址。
 
- 设置 
- 切换到 - barman用户。- sudo su - barman
- 使用 - barman receive-wal命令创建复制槽,然后开始从数据库服务器接收 WAL 流:- barman receive-wal --create-slot CONFIGURATION_TAG- barman receive-wal CONFIGURATION_TAG &- 将 - CONFIGURATION_TAG替换为您在上一步中选择的配置标记。
Barman 现已配置为与 AlloyDB Omni 服务器配合使用。如需检查复制状态、创建手动备份和执行其他任务,请参阅常规命令。
例如,如需创建手动备份,请运行 barman backup 命令。