Barman恢复时无法识别target-time参数格式问题求助
问题
尝试使用Barman恢复备份时,使用--target-time参数始终报错无法解析时间格式,执行命令及错误信息如下:
barman@BKUP-XXX:~$ barman recover --target-time '2023–04–22 00:00:00.000000+02:00' --remote-ssh-command "ssh postgres@pgdb-XXX" PGDB-XXX 20230416T214125 /var/lib/postgresql/13/main/ Starting remote restore for server PGDB-XXX using backup 20230416T214125 Destination directory: /var/lib/postgresql/13/main/ Remote command: ssh postgres@pgdb-XXX ERROR: Unable to parse the target time parameter '2023–04–22 00:00:00.000000+02:00': Unknown string format: 2023–04–22 00:00:00.000000+02:00 barman@BKUP-XXX:~$
无论是否包含毫秒或时区,调整后均报错,怀疑是否为Python依赖问题,但服务器仅用于Barman部署。
解决方案
替换中文破折号为英文短破折号
你的时间字符串中使用了中文长破折号(–),而Barman要求使用英文短破折号(-)。把2023–04–22替换为2023-04-22即可解决核心格式解析问题。使用Barman兼容的时间格式
Barman基于Python的datetime模块解析时间,推荐使用以下标准格式:- ISO 8601带分隔符格式:
'YYYY-MM-DD HH:MI:SS.ffffff±TZ'(如'2023-04-22 00:00:00.000000+02:00') - ISO 8601紧凑格式:
'YYYY-MM-DDTHH:MI:SS±TZ'(如'2023-04-22T00:00:00+02:00')
注意时区部分的符号(+/-)和冒号必须是英文符号。
- ISO 8601带分隔符格式:
简化测试验证
可以先使用无毫秒的简化格式测试,确认解析正常后再添加毫秒:barman recover --target-time '2023-04-22 00:00:00+02:00' --remote-ssh-command "ssh postgres@pgdb-XXX" PGDB-XXX 20230416T214125 /var/lib/postgresql/13/main/确认时间范围有效性
确保目标时间在备份生成时间(20230416T214125)之后,且Barman服务器上有该时间点对应的WAL日志可用,否则即使格式正确也会恢复失败。
内容的提问来源于stack exchange,提问作者Dave_B.
相关产品推荐
相关产品推荐

