通过SSH导入远程postgresql数据库?

我有两台机器:

  • Remote ,Ubuntu服务器,example.com,数据库: staging (所有者user2,pass2),无密码loginuser1(sudoer)通过ssh
  • Local ,Ubuntu,本地主机,数据库: local (拥有者user3,pass3)

问题是:

  • 如何在一个命令/脚本中将staging数据库的数据和结构导入local (反之亦然)?
  • 如何设置权限?

这些不是生产数据库,所以我不需要实时同步。 我只需要自动执行psql任务(通常通过转到phppgadmin,将数据导出到文件,通过psql从文件导入数据,全部从Local机器完成)。

最好的解决scheme是独立于数据库所有者/密码,因为我有几个这样的数据库对。 我在两台机器上都有root权限,我可以安装任何额外的必需用户帐户/软件。

可能很简单,只需编写数据库转储脚本,然后将文件传输到其他数据库服务器,然后恢复:

使用PostgreSQL服务器find的“pg_dump”实用程序可以被数据库pipe理员用来将数据库转储或备份到文件中。 pg_dump的语法是:

pg_dump databasename -f输出文件-i -x -O -R -S用户名

我不完全是这个脚本http://www.wisdombay.com/articles/pg_dmp.sh的粉丝,但它应该适合你的工作。

我谨慎的原因是 – 因为它包含您的login名/密码

现在简单地scp到备份服务器并运行cron作业来导入数据库。

如果卡住了 – 让我知道。