web-dev-qa-db-ja.com

PostgreSQLデータをPC間でコピーする

サーバーアプリケーションを既存のシステムから別のシステムに移行しています。残念ながら、既存のシステムはデータベースサーバーでもあります。データが保存されています。このデータを他のシステムにコピーすることは可能ですか?すべてのテーブルスキーマのコピーがあります。
どうすればよいかわかりません。 PostgreSQLを使用しています。

4
Ashwin

pg_dump を使用してデータベースをダンプし、psqlを使用して新しいサーバーに復元できます。上記のリンクからのコマンドをいくつか次に示します。

バックアップを作成します。

pg_dump mydb > db.sql

db.sqlを新しいサーバーにコピーします(特定のコマンドはOSによって異なります)

新しいサーバーに移動します

createdb mydb -E UTF8(UTF8エンコードを指定する必要はありませんが、常に指定します)

次に:

psql -d mydb -f db.sql

私が答えている間、JohnPは良い答えで答えましたが、pg_hba.confがリモート接続を許可するように編集され、postgres.confがネットワークでリッスンするように編集されていると想定しています。

14
swasheck

おそらく最も簡単な方法は、古いサーバーからフルダンプを実行し、その結果を新しいサーバーに直接パイプすることです。このような:

pg_dump -h old_server_ip -p 5432 -U username dbname | psql -h localhost -p 5432 -U username dbname

これをスーパーユーザーとして実行します。デフォルトでは、postgresユーザーはスーパーユーザーですが、他のユーザーを作成した可能性があります。

更新:異なるサーバーバージョン間でデータを移動する場合は、最新バージョンのpg_dumpを使用してください。おそらく、新しいサーバーのpg_dumpを使用してください。

12
JohnP

前回このようなタスクを実行する必要があったとき、「GeoKettle」という無料のETLツールを使用しました

http://www.spatialytics.org/projects/geokettle/

最初は少し怖いように見えますが、サーバーからサーバーへのコピーのために行う必要があるのは、テーブル入力を作業面にドラッグし、テーブルを作業面にドラッグし、それらを結合してから、それぞれをダブルクリックして構成するだけです。必須。

それが完了したら、変換を保存し、必要なときにいつでも実行できるようにします。

実行するには、変換をロードして、実行ボタンをクリックします。すべてが問題なく正しく構成されていると仮定すると、データを比較的迅速に転送する必要があります。

空間データを処理する必要がない場合は、「Pentaho」と呼ばれる非空間バージョンを使用できますが、GeoKettleはPentahoが実行できるすべてのことを実行できるため、GeoKettleは2のうち最も優れています。

アプリに慣れるまでに1日かかるでしょうが、これを完了すると、すべてが非常に簡単で、再利用できることがわかります。

私は今、このアプリを使用して、あらゆる種類の異なるサーバーから他の異なるサーバーにコピーしたり、あらゆる種類のデータを一括で読み込んだりしています。

0
shawty