Postgresql 不能';t从pg_basebackup还原postgres v11
我正在使用Postgresql 不能';t从pg_basebackup还原postgres v11,postgresql,database-backups,database-restore,timescaledb,Postgresql,Database Backups,Database Restore,Timescaledb,我正在使用pg_basebackup从我的postgresql数据库(v11)进行备份,如下所示: pg_basebackup-h localhost-p5432-U postgres-D/tmp/backup-Ft-z-Xs-p 备份过程完成得很好,没有任何错误。然后,作为测试,我希望从备份中恢复,为此,我执行以下步骤: 关闭postgres实例 从/var/lib/postgresql/data文件夹中删除所有内容 rm-rf/var/lib/postgresl/data/* 在那里卸载基
pg_basebackup
从我的postgresql数据库(v11)进行备份,如下所示:
pg_basebackup-h localhost-p5432-U postgres-D/tmp/backup-Ft-z-Xs-p
备份过程完成得很好,没有任何错误。然后,作为测试,我希望从备份中恢复,为此,我执行以下步骤:
/var/lib/postgresql/data
文件夹中删除所有内容
rm-rf/var/lib/postgresl/data/*
tarxvf/tmp/backup/base.tar.gz-C/var/lib/postgresql/data
tarxvf/tmp/backup/pg_wal.tar.gz-C/tmp/archived_wals
/var/lib/postgresql/data
文件夹中创建一个文件recovery.conf
:
touch /var/lib/postgresql/data/recovery.conf
chown postgres:postgres /var/lib/postgresql/data/recovery.conf
restore\u命令='cp/path/archived\u wals/%f“%p”
2020-02-04 11:34:52.599 UTC[1]日志:侦听IPv4地址“0.0.0.0”,端口5432
2020-02-04 11:34:52.599 UTC[1]日志:侦听IPv6地址“:”,端口5432
2020-02-04 11:34:52.613 UTC[1]日志:在Unix套接字上侦听“/var/run/postgresql/.s.PGSQL.5432”
2020-02-04 11:34:52.709 UTC[18]日志:数据库系统中断;最后已知时间为2020-02-04 08:39:54 UTC
cp:无法统计“/tmp/archived_wals/0000000 2.history”:没有这样的文件或目录
2020-02-04 11:34:52.735 UTC[18]日志:开始存档恢复
2020-02-04 11:34:52.752 UTC[18]日志:检查点记录无效
2020-02-04 11:34:52.752 UTC[18]致命:找不到所需的检查点记录
2020-02-04 11:34:52.752 UTC[18]提示:如果您不是从备份中恢复,请尝试删除文件“/var/lib/postgresql/data/backup\u label”。
2020-02-04 11:34:52.753 UTC[1]日志:启动过程(PID 18)已退出,退出代码为1
2020-02-04 11:34:52.753 UTC[1]日志:由于启动过程失败,正在中止启动
2020-02-04 11:34:52.769 UTC[1]日志:数据库系统已关闭
我想我遗漏了什么,也许我需要对postgres进行额外的配置,以便能够恢复pg\u basebackup
备份?尝试以下方法:
/pgsql-11/bin/pg_basebackup -D /pgdata/pg11/data -X stream --waldir=/pglog/pg11/wal_log/ -P -c fast -h remoteserver\localserver -U username
让我知道这是否有效。毕竟,这是我的错 我将目标占位符括在%中,而不是
recovery.conf
中的双引号
但是,我所描述的备份和恢复方法是有效的,而且由于我纠正了输入错误,因此对我来说效果很好,因此我将问题保留为进一步参考。这应该可以。至少,它在没有时间刻度的情况下对我有效。在启动之前,您可以将wal文件从
/tmp/archived_wals/
直接复制到/var/lib/postgresql/data/pg_wal
中,但这不是必需的。@jjanes确实是。我在recovery.conf
文件中输入了一个类型。我用%p%
代替了%p”
,它把事情搞砸了,但是错误消息并没有很好地描述问题的根源。感谢更新。关于这个问题的日志记录对我来说似乎很不满意。您的命令“成功”,但未能创建预期的文件。代码中检测问题的部分与导致问题的部分相差甚远,它不知道问题的细节。