Barman postgresql传入WALs目录

Barman postgresql incoming WALs directory

我在 Barman 中遇到传入 WAL 目录的问题 - postgresql 数据库的备份工具

在我的数据库服务器中 postgresql.conf

wal_level = 'archive'
archive_mode = on
archive_command = 'rsync -a %p barman@mybarmanserverip:INCOMING_WALS_DIRECTORY/%f'

在我的酒保服务器中,当我发出命令 "barman show-server myservername" 时,我得到,我的 incoming_wals_directory

/var/lib/barman/myservername/incoming

命令 barman check myservername return "OK" 在所有方面,但是当我想在命令 barman backup myservername 中进行备份时,我看到前 3 点是正确的,但点 "Asking PostgreSQL server to finalize the backup" 永无止境。 我的错误在哪里?

INCOMING_WALS_DIRECTORY 替换为您可以使用此命令 barman show-server main

找到的传入文件夹路径
archive_command = 'rsync -a %p barman@mybarmanserverip:/var/lib/barman/main/incoming/%f'

确保将 INCOMING_WALS_DIRECTORY 占位符更改为上面酒保 show-server 主命令返回的值。

还要确保 postgres 用户可以正确地通过 ssh 连接到酒保服务器。

我遇到了这个问题,这是由于 rsync 引起的问题。 要检查是否适合您,请尝试 rsync 一个随机文件:

rsync -zvh random_file user@remote_host:/tmp/test

如果输出类似于: protocol version mismatch -- is your shell clean?

那么有两个可能的原因:

    1. 两台服务器上的rsync版本不一样
    1. ssh 到远程服务器时会输出一些文本,rsync 不喜欢

为了解决第一个问题,我是这样做的:

  • 确保 rsync --version 在两台机器上相同:

    • 在您的本地环境中 运行 rsync --version
    • 从本地(到远程)运行 ssh login@remote_host "rsync --version"

(如果不匹配请安装正确的版本。)

要解决第二个问题,您必须在 .bashrc 文件中添加一些内容,以防止在非交互式会话中通过 ssh 连接后输出文本(即 "Last login: Thu Sep..." - 它会导致 rsync 失败)

我把它放在我的 .bashrc 文件的顶部: case $- in *i*) ;; *) return;; esac

然后 rsync 工作正常,初始 barman backup 命令完成得很好