【问题标题】:Postgres - Pull a copy of an entire DB from a remote server, to local dev machinePostgres - 将整个数据库的副本从远程服务器拉到本地开发机器
【发布时间】:2016-06-07 02:43:31
【问题描述】:

一直试图找到这个问题的答案,但答案似乎集中在“推动”心态而不是“拉动”。像这样:

Copying PostgreSQL database to another server

我有一台本地 VM 开发机器。红帽 REHEL。我也有一个远程环境,我们把它命名为“集成”。我可以通过 SSH 访问此环境,并且在远程服务器上的 Sudoers 组中。

我想要的是在我的本地 VM 上有一种方法可以在集成时下拉数据库的完整副本,并将其推送到等待(空)数据库中。我们称该数据库为“int_backup”。

这不一定是一个命令。很高兴 bash 编写多个命令。但这里的关键是集成不知道我的本地 VM 并且无法访问它。所以任务必须从虚拟机方面完成。

欢迎所有建议。但是在集成上安装软件可能不太现实。

【问题讨论】:

  • 为什么不在你的虚拟机上pg_dump -h integration.hostname 然后恢复它?...
  • 如果你不喜欢 pg_dump 和 pg_restore 你可以做复制

标签: bash postgresql


【解决方案1】:

也许这样(在遥控器的~postgres/.ssh/authorized_keys 文件中安装您的公钥):

ssh postgres@yourremotehost 'pg_dump yourdbname | xz -0' |\
  xzcat | psql yourdbname

或者,在遥控器的/etc/sudoers 文件中添加一个条目,使您的用户能够无密码地执行sudo -u postgres pg_dump yourdbname,这样您就可以运行:

ssh youruser@yourremotehost 'sudo -u postgres pg_dump yourdbname | xz -0' |\
  xzcat | psql yourdbname

在这两种情况下,转储和还原将同时进行,不会创建转储文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 2011-05-25
    • 2013-03-04
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多