我尝试使用答案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。
我做了什么:
在receiverpc上打开防火墙,允许访问PostgreSQL端口。
在receiverpc上编辑/etc/postgresql/9.3/main/postgresql.conf,让它接收外部地址:
listen_addresses =' *'
在receiverpc上编辑/etc/postgresql/9.3/main/pg_hba.conf为sourcepc添加条目:
主持所有sourcepc_ipaddress / 32 md5
我无法理解为什么它无法正常工作。
答案 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。
非常感谢。