Postgres 10.13中EDB BART归档路径不符致增量备份失败求助
我来帮你拆解这个问题——你遇到的核心矛盾是:你在bart.cfg里配置的归档命令把WAL日志写到了/u01/app/Postgres/archivelogs/,但BART工具识别的归档路径却是自动生成的/u01/app/Postgres/backups/prod2.naveed.com/archived_wals,这直接导致增量备份找不到需要的WAL文件,进而失败。
问题根源分析
EDB BART的默认逻辑是:如果没有在服务器配置段显式指定archive_path参数,它会自动在全局配置的backup_path下,为每个服务器创建一个archived_wals子目录作为默认归档路径。但你只配置了archive_command让WAL文件写到自定义目录,却没告诉BART要去这个自定义目录找归档文件,所以BART还是去默认路径检索,自然找不到目标WAL,就抛出了那个“文件不存在”的警告。
具体解决方案步骤
1. 修改bart.cfg配置文件
在[prod2.naveed.com]的服务器配置段中,添加archive_path参数,明确指向你实际的归档目录:
[BART] bart_host= postgres@localhost backup_path = /u01/app/Postgres/backups pg_basebackup_path = /u01/app/EDB_Postgres10/bin/pg_basebackup [prod2.naveed.com] host = prod2.naveed.com port = 5432 user = postgres cluster_owner = postgres pg_basebackup_path = /u01/app/EDB_Postgres10/bin/pg_basebackup tablespace_path = 16393=/u01/app/Postgres/tablespaces archive_path = /u01/app/Postgres/archivelogs # 新增这一行,指定实际归档路径 archive_command='cp %p /u01/app/Postgres/archivelogs/%f' allow_incremental_backups = enabled
2. 验证配置是否生效
保存配置后,重新执行命令检查服务器信息:
bart show-servers -s prod2.naveed.com
此时输出里的ARCHIVE PATH应该显示为你指定的/u01/app/Postgres/archivelogs,而不是之前的默认路径。
3. 同步已有归档文件(可选但建议)
如果/u01/app/Postgres/archivelogs/里已经有存量WAL文件,执行同步命令让BART识别这些文件,避免后续备份报错:
bart sync-archives -s prod2.naveed.com
这个命令会扫描指定的归档路径,把已存在的WAL文件纳入BART的管理元数据中。
4. 测试增量备份
最后尝试执行增量备份,验证问题是否解决:
bart backup -s prod2.naveed.com -i # -i 参数表示执行增量备份
额外注意事项
- 确保
postgres用户对/u01/app/Postgres/archivelogs目录有完整的读写权限,避免归档或同步操作时出现权限报错。 - 后续如果需要调整归档路径,务必同时更新
archive_command和archive_path,保持两者指向一致,否则会再次出现类似的路径不匹配问题。
内容的提问来源于stack exchange,提问作者Nav

