本页介绍了如何配置 AlloyDB Omni 与开源数据库备份服务器 Barman 搭配使用,以保护您的数据。
您可以使用与 PostgreSQL 兼容的任何数据库备份技术来保护 AlloyDB Omni 数据。例如,您可以配置 AlloyDB Omni 以允许来自您控制的 Barman 服务器的连接。这样,Barman 服务器就可以持续备份存储在 AlloyDB Omni 服务器中的数据。
将 Barman 和 AlloyDB Omni 服务器配置为协同工作后,您可以随后运行 Barman 命令来执行各种数据保护和灾难恢复任务,包括:
- 创建数据的按需备份。
- 设置将数据更改同步流式传输到备用服务器的 WAL。
- 从特定备份恢复。
- 执行时间点恢复。
如需详细了解 Barman 的运作方式,请参阅 Barman 手册。
准备工作
在将 AlloyDB Omni 配置为与 Barman 搭配使用之前,您需要满足以下条件:
在单独的服务器上安装了 Barman。您安装 Barman 的服务器必须能够通过 TCP 与 AlloyDB Omni 服务器通信。
配置 AlloyDB Omni 以与 Barman 搭配使用
如需准备 AlloyDB Omni 服务器以与 Barman 搭配使用,请在安装了 AlloyDB Omni 的服务器上运行以下命令。
创建具有适当权限的
barman
数据库用户: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; "
在
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 restart CONTAINER_NAME
将
CONTAINER_NAME
替换为您在安装 AlloyDB Omni 容器时为其分配的名称。通过运行以下命令确认所有必要参数均已正确设置:
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; "
输出如下所示:
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
命令。