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

wyr*_*red 13 postgresql

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

ssh -t remoteserver 'mysqldump --compress -u dbuser --password="password" db_name' | /usr/local/mysql/bin/mysql -u root --password="password" local_db_name
Run Code Online (Sandbox Code Playgroud)

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

dez*_*zso 18

如果数据库服务器从您的主机(通常在端口 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 对于将来阅读本文的任何人:输入第一个(远程)数据库的密码,按 Enter 键,输入本地主机数据库用户的密码,按 Enter 键。事实上,它提示输入两个密码(并且 UNIX 在您输入密码时从不显示密码)也让我感到困惑。 (3认同)