リモートサーバーからPostgreSQLデータベースをコピーする


11

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

どうすればPostgreSQLで同じことができますか?

回答:


15

DBサーバーがホストからデータベース接続を行う場合(通常はポート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ファイルに保存しない限り、パスワードを2回要求します(linux / Unixを使用している場合)。また、DBがTCPをリッスンしない場合は、ローカル接続が異なる場合があります(この場合は、-h localhost一部を省略します)。

詳細とオプションについては、pg_dumpのドキュメントを参照してください。


両方のサーバーで同じパスワードを設定する必要があるということですか?
Florian Heigl 2015年

1
@FlorianHeigl No.
dezso 2017年

将来これを読む人のために:最初の(リモート)DBのパスワードを入力してEnterキーを押し、ローカルホストDBユーザーのパスワードを入力してEnterキーを押します。それが両方のパスワードを要求する(そしてUNIXがあなたがそれらを入力するときにパスワードを決して表示しない)という事実も私を混乱させました。
AleksandrH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.