当 Barman 与 PostgreSQL 主机安装在同一主机上时,是否需要设置 ssh 连接?

当 Barman 与 PostgreSQL 主机安装在同一主机上时,是否需要设置 ssh 连接?

我正在尝试配置 Barman (帕格巴曼) 与同一主机上的 PostgreSQL 数据库一起工作,我不想在单独的主机上安装 barman,但我找不到有关这种方法的任何文档。互联网上的所有资源都是关于在单独的服务器上设置 barman,然后配置 SSH 连接以进行 WAL 归档和备份,当我在同一台主机上时,我是否也需要设置 ssh 连接,如果是“是”,那么如何配置 Barman 和数据库?!

我所做的如下,以实现我的愿望(部分):

  • Barman 服务器配置:
$ cat /etc/barman.d/10-main.conf

[10pg]
description =  "The main PostgreSQL server"
conninfo = host=127.0.0.1 user=barman dbname=postgres port=5432
backup_method = postgres
archiver=on
  • PostgreSQL Wal 配置(postgresql.conf):

我必须添加“chown”命令,因为如果文件所有权属于其他用户(而非 barman),barman 就无法识别这些文件(WAL)。

wal_level = replica
archive_mode = on 
archive_command = 'test ! -f /var/lib/barman/10pg/incoming/%f && cp %p /var/lib/barman/10pg/incoming/%f && sudo chown barman /var/lib/barman/10pg/incoming/%f'
  • PostgreSQL HBA(pg_hba.conf):
local   all             barman                                  peer
  • “postgres”用户的无密码 sudo (/etc/sudoers):
postgres ALL=(ALL) NOPASSWD:ALL

如您所见,上述方法看起来并不健康。

答案1

以下设置将使 Barman 能够使用 pg_basebackup 备份数据库,并使用 pg_receivewal 接收 WAL 日志,其中 Barman 安装在与 PostgreSQL 数据库相同的操作系统上(无 SSH/RSYNC):

1.准备全局/通用配置文件(barman)。

2.准备服务器配置文件(barman):

$ cat /etc/barman.d/{servername}.conf 

[streaming] # the name of the server configuration file, which would be later refer to as {barman-server-config-name} 
# Human readable description 
description =  "Main PostgreSQL 10 Database (Streaming-Only)" 
# ######################################################### 
# PostgreSQL connection string (mandatory) 
# ######################################################### 
conninfo = host=localhost user=barman dbname=postgres 
# ######################################################### 
# PostgreSQL streaming connection string 
# ######################################################### 
# To be used by pg_basebackup for backup and pg_receivexlog for WAL streaming 
streaming_conninfo = host=localhost user=barman 
# ######################################################### 
# Backup settings (via pg_basebackup) 
# ######################################################### 
backup_method = postgres  
# ######################################################### 
# WAL streaming settings (via pg_receivexlog) 
# ######################################################### 
streaming_archiver = on 
slot_name = barman 
#streaming_archiver_name = barman_receive_wal 
#streaming_archiver_batch_size = 50 
# PATH setting for this server 
#path_prefix = "/usr/pgsql-12/bin" 
backup_method = postgres 
incoming_wals_directory = /var/lib/barman/streaming/incoming 

第三,准备 ~/.pgpass 文件:

$ cat ~/.pgpass 

#hostname:port:database:username:password 
localhost:5432:replication:barman:barman 
localhost:5432:postgres:barman:barman 

$ chmod 0600 ~/.pgpass 

4.准备 PostgreSQL 数据库:

创建数据库用户:

$ psql –c “create user barman superuser replication password 'barman';” 

编辑 PostgreSQL 配置文件 /etc/postgresql/{major-realease}/{cluster-name}/postgresql.conf:

wal_level = replica 
archive_mode = on
archive_command = 'test ! -f /var/lib/barman/{barman-server-config-name}/incoming/%f && cp %p /var/lib/barman/ {barman-server-config-name} /incoming/%f'
archive_timeout = 3600
max_wal_senders = 2
max_replication_slots = 10

为 Barman 创建 Slot 并启动接收进程:

启动一个receive-wal进程。该进程使用流式协议从PostgreSQL服务器接收WAL文件。

$ barman cron 
$ barman receive-wal –create-slot {barman-server-config-name} 
$ barman receive-wal {barman-server-config-name} 

检查服务器状态和复制状态:

$ barman check {barman-server-config-name} 
$ barman status {barman-server-config-name} 
$ barman replication-status {barman-server-config-name} 

相关内容