1

当尝试将 wal-g 与 Patroni 一起使用时,我将以下配置作为 patroni.yml 的 Postgres 部分:

postgresql:
  use_pg_rewind: true
  use_slots: true
  parameters:
    wal_level: logical
    hot_standby: "on"
    wal_keep_segments: 8
    max_wal_senders: 8
    max_replication_slots: 8
    checkpoint_timeout: 30
    archive_mode: "on"
    archive_command: PGUSER=dba PGPASSWORD=xx WALG_FILE_PREFIX=file://localhost/backup-disk/ wal-g wal-push "%p"
  recovery_conf:
    restore_command: PGUSER=dba PGPASSWORD=xx WALG_FILE_PREFIX=file://localhost/backup-disk/ wal-g wal-fetch "%f" "%p"

但是,如果我尝试使用 创建备份PGHOST=/var/run/postgresql PGUSER=dba PGPASSWORD=xx envdir /data/conf/wal-e.env wal-g backup-push /data/postgresql/current,它会尝试连接到dba不存在的数据库:

INFO:  Doing full backup.
ERROR: Connect: postgres connection failed: FATAL: database "dba" does not exist (SQLSTATE 3D000)

从 wal-g 文档和搜索中,不清楚为什么不是这种情况,所以为了让事情更容易被发现,我在问这个问题。

4

1 回答 1

0

一旦我检查了WAL-G 源代码并发现他们的测试环境配置示例包含以下设置,答案就变得非常简单:

PGDATABASE=postgres

因此,要进行明显的备份工作,我现在有以下内容:

PGDATABASE=postgres PGHOST=/var/run/postgresql PGUSER=dba PGPASSWORD=xx WALG_FILE_PREFIX=file://localhost/backup-disk/ wal-g backup-push /data/postgresql/current

这会在 中创建预期的文件/backup-disk/,所以现在需要做的就是整理安排正确数据库的一些备份。

于 2019-12-03T13:58:39.893 回答