Bareos Postgres Plugin无法备份远程PostgreSQL13数据库问题咨询
问题根因
你遇到的报错和配置不符合预期,本质是对Bareos PostgreSQL插件的运行逻辑和Bareos架构理解有误:
- Bareos的备份逻辑是:需要备份的目标主机必须安装Bareos File Daemon(FD,客户端代理),PostgreSQL插件是运行在目标主机的FD进程上的扩展,本身就没有跨主机读取PG数据目录、WAL文件的能力,所以官方要求插件必须和PG部署在同一主机。
- 你填写的
dbHost参数作用是指定本地Unix套接字路径,不支持填写远程TCP地址,插件不会通过TCP协议读取远程PG的本地文件,只会读取当前主机的文件系统路径,因此你把插件装在Bareos服务端节点自然找不到远程PG主机上的backup_label文件。
插件与Bareos服务端的通信逻辑
插件和Bareos服务端不需要直接通信,通信由FD完成:
- PostgreSQL所在主机的FD收到Bareos Director(控制节点)的备份指令后,调用本地安装的PostgreSQL插件
- 插件在本地执行PG备份逻辑:创建备份标签、读取数据文件、读取WAL归档
- 本地FD将插件返回的备份数据直接传输给Bareos Storage Daemon(存储节点)落盘,整个过程不需要你手动做跨主机的文件挂载或传输配置。
可行解决方案
方案1(推荐,保留PostgreSQL插件优势)
按照官方要求调整部署架构:
- 在PostgreSQL运行的主机上安装和服务端版本一致的Bareos 20.0.1 File Daemon,完成与Director、Storage Daemon的通信授权配置
- 在PG主机上安装PostgreSQL插件及依赖,给Bareos FD运行用户授予以下权限:
- PG数据目录
/var/lib/postgresql/13/main和WAL归档目录/var/lib/postgresql/13/wal_archive/的读取权限 - 配置的
dbuser用户的本地PG备份权限
- PG数据目录
- 调整原
fileset配置的dbHost参数为PG本地Unix套接字路径(默认是/var/run/postgresql,不需要填远程DNS) - 在Director的备份Job配置中,将
Client参数指向PG主机的FD节点,关联调整后的fileset即可正常备份。
方案2(不安装PG主机FD,放弃插件优势)
如果确实无法在PG主机部署FD,只能更换备份方案:
- 用
pg_dump/pg_basebackup远程导出PG数据到Bareos服务端本地,再用Bareos备份导出的文件 - 该方案无法实现插件提供的块级增量备份、单库恢复等特性,备份和恢复效率都会明显降低。
内容的提问来源于stack exchange,提问作者Saeid Hosseini
相关产品推荐
相关产品推荐

