从远程服务器复制PostgreSQL数据库


11

当我使用MySQL时,我可以运行一个通过SSH进入服务器的命令,并将数据库复制到本地计算机上。

ssh -t remoteserver'mysqldump --compress -u dbuser --password =“密码” db_name'| / usr / local / mysql / bin / mysql -u root --password =“密码” local_db_name

如何使用PostgreSQL做同样的事情?

Answers:


15

如果数据库服务器从主机(通常在端口5432上)获取数据库连接,则不需要使用SSH。在这种情况下,您需要执行以下操作:

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user

如果只能从主机本身连接到数据库,则必须从MySQL示例中添加SSH逻辑。

使用-C,您将CREATE DATABASE在转储的开头获得命令,因此您不必自己创建它。除非您将密码存储在.pgpass文件中(假设您使用的是Linux / Unix),否则上述命令将要求输入两次密码。另外,如果您的数据库不侦听TCP,则本地连接可能会有所不同(在这种情况下,请忽略该-h localhost部分)。

有关更多详细信息和选项,请参见pg_dump文档


意味着您需要在两台服务器上使用相同的密码,对吗?
Florian Heigl

1
@FlorianHeigl号
dezso

对于以后阅读此文件的任何人:输入第一个(远程)数据库的密码,按Enter,输入您的本地主机DB用户的密码,按Enter。它提示输入两个密码(UNIX在输入密码时从不显示密码)这一事实也使我感到困惑。
AleksandrH
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.