一直在试图找到答案,但答案似乎集中在"推动"心态而不是"拉"上。喜欢这个:
将 PostgreSQL 数据库复制到另一台服务器
我有一台本地 VM 开发计算机。雷德哈特·雷赫尔。我还有一个远程环境,我们将其命名为"集成"。我对此环境具有 SSH 访问权限,并且位于远程服务器上的 Sudoers 组中。
我想要的是在我的本地 VM 上有一种方法在集成时拉下数据库的完整副本,并将其推送到等待(空)数据库中。我们称该数据库为"int_backup"。
这不一定是一个命令。乐于编写多个命令。但这里的关键是集成不知道我的本地 VM,也无法访问它。因此,任务必须从 VM 方面完成。
欢迎所有建议。但是在集成上安装软件可能不是一个现实的解决方案。
也许是这样(将公钥安装在遥控器的~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
在这两种情况下,转储和还原将同时发生,并且不会创建转储文件。