数据备份
更新时间:2024-04-25 05:30:23
WAL archive: FAILED (please make sure WAL shipping is setup)
执行barman check命令时,返回上述报错信息
barman -c /aifs01/users/antdb/barman/conf/datanode0.conf check datanode0
下面给出一个完整的配置文件示例:
more datanode0.conf
[barman]
barman_user = antdb
#configuration_files_directory = /aifs01/users/antdb/barman/conf/
barman_home = /aifs01/users/antdb/barman/data/
log_file = /aifs01/users/antdb/barman/log/barman.log
compression = gzip
parallel_jobs =3
minimum_redundancy = 0
retention_policy = RECOVERY WINDOW OF 1 WEEKS
reuse_backup = off
[datanode0]
description = "datanode master datanode0"
ssh_command = ssh antdb@10.1.242.25 -p 22022 -q
conninfo = host=10.1.242.25 port=14332 user=antdb dbname=tstadb
backup_method = rsync
reuse_backup = link
backup_options = exclusive_backup
parallel_jobs = 3
archiver = on
archiver_batch_size = 50
解决方式
- 确认datanode0的archive_mode已经设置为打开 on
登录adbmgr或datanode节点
show datanode0 archive_mode;
type | status | message
---------------------------+--------+-------------------
datanode master datanode0 | t | archive_mode = on
- 确认datanode0的archive_command设置是否正确?手工执行不报ssh连接错误。
很多现场会修改ssh的默认端口,比如改成22022。则建议按下述步骤调整归档命令
set datanode master datanode0 (archive_command = 'rsync --address=10.1.242.27 --port=22022 -a %p antdb@10.1.242.27:/aifs01/users/antdb/barman/data/datanode0/incoming/%f');
如果上述的port命令不生效,还是连接的默认22端口,手工执行时,还是报连接拒绝,则使用 下面的命令设置归档
set datanode master datanode0 (archive_command = 'rsync -e "ssh -p 22022" --address=10.1.242.27 --port=22022 -a %p antdb@10.1.242.27:/aifs01/users/antdb/barman/data/datanode0/incoming/%f');
(各现场ssh版本不一样,可识别的配置项不同)
- 手工执行一次wal日志切换操作
barman -c /data/antdb/barman/etc/barman.conf switch-xlog --force --archive antdb117
原因说明
要么没有打开归档模式,要么归档命令设置或执行失败。 请按上述步骤依次排查。
minimum redundancy requirements: FAILED (have 0 backups, expected at least 1)
执行barman check命令时,返回上述报错信息
barman -c /aifs01/users/antdb/barman/conf/datanode0.conf check datanode0
解决方式**
datanode0.conf的minimum_redundancy修改为0
minimum_redundancy = 0
原因说明
无
ssh output clean: FAILED (the configured ssh_command must not add anything to the remote command output)
执行barman check命令时,返回上述报错信息
barman -c /aifs01/users/antdb/barman/conf/datanode0.conf check datanode0
解决方式**
- datanode0.conf 的 ssh_command 命令,在最后添加 -q 选项,不产生任何输出信息.
ssh_command = ssh antdb@10.1.242.25 -p 22022 -q
详细的原因说明,请参考: The test that Barman does is to execute 'true' using the ssh_command and checking that the output is empty.
In your case, please check that the following command doesn't produce any output.
链接:https://groups.google.com/forum/#!topic/pgbarman/1xjUU4mnrfI
- 确保archive_command和barman配置文件中几个变量值的对应关系
----------archive_command命令示例:
archive_command = 'rsync --address=10.1.242.27 --port=22022 -a %p antdb@10.1.242.27:/aifs01/users/antdb/barman/data/datanode0/incoming/%f'
---------datanode0.conf配置示例:
[barman]
barman_home = /aifs01/users/antdb/barman/data/
[datanode0]
--------两者对应关系:
archive_command命令中的
/aifs01/users/antdb/barman/data/datanode0
必须等于
datanode0.conf配置文件中的 barman_home的配置值 + [datanode0]的配置值
/aifs01/users/antdb/barman/data/datanode0
即:
barman_home的配置值 + [datanode0]的配置值 + 'incoming/%f'固定字符串
原因说明
centos7.2以后,某些ssh场景下需要静默返回输出,即ssh命令添加了 -q 静默选项,否则就报标题所示的错误。
ERROR: invalid byte sequence for encoding "UTF8":
场景:使用copy命令导入数据 例如
\copy t1 from 't1.csv' with csv
原因说明
导入的文件中含非UTF8字符集的内容,通常为GBK字符集的中文
解决方式
- 修改导入文件编码为UTF8
- 指定字符集 \copy t1 from 't1.csv' with csv encoding 'GBK'
问题反馈