如何在没有 psql 和 pg_restore 的情况下恢复 PostgreSQL 数据库备份?

Posted

技术标签:

【中文标题】如何在没有 psql 和 pg_restore 的情况下恢复 PostgreSQL 数据库备份?【英文标题】:How to restore PostgreSQL database backup without psql and pg_restore? 【发布时间】:2015-05-15 09:42:38 【问题描述】:

我在运行 yocto(定制的 linux)的嵌入式设备上使用 postgresql。包含 postgresql 的包不提供 psql 或 pg_restore。 /usr/bin 提供以下工具:

pg_basebackup 表示我能够创建备份。但是我应该如何在终端中恢复备份?使用 pg_restore 或 psql 这对我来说不是问题。

请注意:我想使用在我的 windows/linux 计算机上创建的备份在嵌入式设备上创建初始数据库。

【问题讨论】:

psqlpg_restore客户端 端工具。您不需要在服务器上使用它们来恢复备份。如果您可以从桌面连接到设备上运行的 Postgres 服务器,则可以从 Windows/Linux 计算机恢复转储。 pg_basebackup 主要用于引导第二个节点进行复制。没有等效的“恢复工具,因为它只是创建数据目录的副本。 可以通过网络恢复备份。但是,我想在第一次启动时初始化嵌入式系统,并提供所有必要的文件(例如当前的数据库备份)。因此,如果系统上有可用的备份文件,我需要一些建议如何直接在服务器上恢复备份。 可以通过网络初始化数据库,然后在设备上关闭Postgres,复制数据目录 这不是选项,因为我不想每次都手动执行此操作。我只是想为服务器映像(当​​前为 *.sql)提供最新的备份文件并在第一次系统启动时恢复它们......从命令行运行简单的 *.sql-scripts 已经足够了,但是如何没有 psql 我能做到吗? 也许你可以从你下载服务器软件的地方安装一个包含psql的“postgres-client”包? 【参考方案1】:

使用命令创建数据库备份:

pg_basebackup -h host_ip -D pg_backup  -U USER

要恢复,只需将数据文件夹更改为 pg_backup。现在启动 psql 服务器。

【讨论】:

以上是关于如何在没有 psql 和 pg_restore 的情况下恢复 PostgreSQL 数据库备份?的主要内容,如果未能解决你的问题,请参考以下文章

pg_dump & pg_restore 密码使用 python 模块子进程

可以在 phpPgAdmin 中查看表,但不能在 psql(或任何其他方法)中查看表

PG数据库之间的导入导出

如何在 Windows 命令行上使用 pg_restore?

如何防止物化视图在 pg_restore 期间刷新?

pg_restore 没有禁用触发器