将PostgreSQL数据库转移到不在同一网络上的另一台服务器

时间:2014-06-07 11:20:53

标签: postgresql

我尝试使用答案here允许我将PostgreSQL dbs从旧服务器(sourcepc)传输到完全不同网络上的新服务器(receiverpc)。因此,我在sourcepc上尝试使用以下命令将db转储推送到receiverpc:

pg_dump -C -h localhost -U dbuser dbname | psql -h receiverpc_ipaddress -U dbuser dbname

这不起作用 - 它只是在给出dbuser密码之后就坐在那里。我正在运行Ubuntu(在sourcepc上为9.10,在receiverpc上为14.04)。 PostgreSQL在sourcepc上是8.4,在receiverpc上是9.3。

我做了什么:

  1. 在receiverpc上打开防火墙,允许访问PostgreSQL端口。

  2. 在receiverpc上编辑/etc/postgresql/9.3/main/postgresql.conf,让它接收外部地址:

    listen_addresses =' *'

  3. 在receiverpc上编辑/etc/postgresql/9.3/main/pg_hba.conf为sourcepc添加条目:

    主持所有sourcepc_ipaddress / 32 md5

  4. 重启PostgreSQL。
  5. 我无法理解为什么它无法正常工作。

1 个答案:

答案 0 :(得分:0)

@netch:是的,它正在发挥作用。

echo "\dt" | psql -U dbuser -d dbname

给出了db中的表的列表。

@Ken Hampson:我认为你是对的。我花了2个小时在这上面,用pg_pass等摆弄,最后决定不再费心去做:

su - postgres

pg_dump --clean dbname > dbs/dbname.sql

scp -r dbs/ myuser@receiverpc:/home/myuser

然后在receiverpc上的每个数据库上运行psql。

非常感谢。