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
备份过程完成得很好,没有任何错误。然后,作为测试,我希望从备份中恢复,为此,我执行以下步骤:

  • 关闭postgres实例
  • /var/lib/postgresql/data
    文件夹中删除所有内容

    rm-rf/var/lib/postgresl/data/*

  • 在那里卸载基本存档:

    tarxvf/tmp/backup/base.tar.gz-C/var/lib/postgresql/data

  • 将wal存档解压到临时目录

    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
    
  • 在recovery.conf文件中指定recovery命令:

    restore\u命令='cp/path/archived\u wals/%f“%p”

  • 重新启动postgres实例,并等待恢复完成

  • 然而,当postgres启动时,我在日志中发现以下错误:

    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”
    ,它把事情搞砸了,但是错误消息并没有很好地描述问题的根源。感谢更新。关于这个问题的日志记录对我来说似乎很不满意。您的命令“成功”,但未能创建预期的文件。代码中检测问题的部分与导致问题的部分相差甚远,它不知道问题的细节。