2016-03-29 4 views

答えて

0

別のフォルダにあるホストに空のpostgresqlデータベースを作成し、PostgreSQLデーモンを起動してデータをインポートし、それを単にコンテナにマウントするのが最も簡単です。以下のスクリプトを使用して/tmp/postgres-memフォルダにDBを作成し、そこにデータをインポートすることができます。あなたがthis approachを検討する必要がありますしかし

#!/bin/bash 

export PGDIR=/tmp/postgres-mem 

pg_ctl -D "$PGDIR" stop 

rm -vfr "$PGDIR" 

mkdir "$PGDIR" 

pg_ctl init -D "$PGDIR" 

pg_ctl -D "$PGDIR" start -o "-h localhost -c fsync=off -c synchronous_commit=off -c full_page_writes=off -c log_destination='stderr' -c logging_collector=on -c log_directory='pg_log' -c log_filename='postgresql-%Y-%m-%d_%H%M%S.log' -c log_statement='all' -k /tmp/postgres-mem" 

sleep 3 

psql -h localhost -c 'create user cooluser with superuser' template1 
psql -h localhost -c 'create database "whatever"' template1 

、その後

psql -U cooluser whatever < your_dump_file.sql 

は、あなたのデータコンテナ

には/ tmp/postgresの-MEMの内容をコピーします。

+0

発信元のPostgreSQLインスタンスがそのようにあなたが提案するアプローチは、しかし、動作しませんDockerizedていなかっただけでボリュームへのバックアップを復元するために使用されるコンテナを削除します。 – JohnDoe

+0

さて、まだ特定のpostgresqlインスタンス用のデータベースで初期化されたファイルシステムを取得する必要があります。そして、それをどうやって得るのかはまったく問題ではありません:) – jdevelop

1

StackOverflowのは簡潔にある答え私はthereに書かれているものを繰り返しpenaltizes通り:

  1. はコンテナ
  2. 実行バックアップを復元するために、一時的なPostgresのコンテナデータを作成します。データのみのコンテナとローカルバックアップを含むディレクトリを添付します。
  3. 復元コンテナに接続します。コンテナ内
  4. postgresqlユーザーに切り替え
  5. 復元するデータベースのスーパーユーザーと一致するパスワードを作成します。
  6. \ qでpsqlセッションを終了します。コンテナ内にまだあります。
  7. コマンドプロンプトでバックアップを復元します。
  8. 最終的なDocker Postgresコンテナを作成します。前の手順で復元が行われたデータベースの正しい名前を指定することに注意してください。
  9. は、データ
+0

各ステップでコマンド例を表示すると、あなたの答えはもっと意味があります。乾杯 – Sarz

関連する問題