web-dev-qa-db-ja.com

pg_dumpとpg_restoreを使用して大規模なデータベースを別のマシンに移動するにはどうすればよいですか?

大規模なデータベースを移動するためにpg_dump/pg_restore duoを使用する方法については、少し不明確です。

これは、データベースをダンプするために使用するコマンドです(ホストとユーザー名は環境変数から取得されます)。

pg_dump --dbname=mydb --format=custom > mydb.dump

私はcustom形式を使用しています。これは、ネットワーク経由でこれを行い、圧縮を使用したいためです。

私がそれを復元しようとすると、私はこれを試しました:

pg_restore --dbname=mydb --no-owner mydb.dump

しかし、私は得ます:

pg_restore: [archiver (db)] connection to database "mydb" failed: FATAL:  database "mydb" does not exist

次に--createオプションを試してみましたが、同じエラーメッセージが表示されます。

最後に、template1--dbnameオプションとして渡してみました。

pg_restore --dbname=template1 --no-owner --create mydb.dump

しかし、ここに私が得るものがあります:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2125; 1262 16395 DATABASE mydb mydbuser
pg_restore: [archiver (db)] could not execute query: ERROR:  invalid locale name: "en_US.utf8"
    Command was: CREATE DATABASE mydb WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8';



pg_restore: [archiver (db)] could not reconnect to database: FATAL:  database "mydb" does not exist

ここで何が悪いのですか?

6
lindelof

あなたがするとき

pg_restore --dbname=mydb --no-owner mydb.dump

まだ存在しないmydbデータベースに接続しようとしています。既存のものに接続し、--createパラメータ:

pg_restore --dbname=existentdb --no-owner --create mydb.dump

http://www.postgresql.org/docs/current/static/app-pgrestore.html

5
Clodoaldo