如何在没有 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 计算机上创建的备份在嵌入式设备上创建初始数据库。
【问题讨论】:
psql
和 pg_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(或任何其他方法)中查看表