回答:
ダンプファイルの作成方法に応じて、調べるツールが2つあります。
最初の参照ソースはpg_dump(1)
、それ自体がダンプ自体を作成するものであるため、manページである必要があります。それは言う:
ダンプは、スクリプトまたはアーカイブファイル形式で出力できます。スクリプトダンプは、データベースを保存時の状態に再構築するために必要なSQLコマンドを含むプレーンテキストファイルです。そのようなスクリプトから復元するには、それをpsql(1)にフィードします。スクリプトファイルは、他のマシンや他のアーキテクチャ上でもデータベースを再構築するために使用できます。他のSQLデータベース製品でもいくつかの変更が加えられています。
データベースを再構築するには、pg_restore(1)で代替アーカイブファイル形式を使用する必要があります。pg_restoreは、復元するものを選択したり、復元する前にアイテムを並べ替えたりすることができます。アーカイブファイル形式は、アーキテクチャ間で移植できるように設計されています。
だから、それが捨てられた方法に依存します。あなたはおそらく優れたfile(1)
コマンドを使用してそれを理解することができます-それがASCIIテキストおよび/またはSQLについて言及している場合は、それを復元する必要がありpsql
ますpg_restore
復元はとても簡単です:
psql -U username -d dbname < filename.sql
-- For Postgres versions 9.0 or earlier
psql -U username -d dbname -1 -f filename.sql
または
pg_restore -U username -d dbname -1 filename.dump
それぞれのマンページを確認してください-復元の動作に影響を与えるオプションはかなりあります。ダンプの生成方法によっては、復元する前に「コメント」で指摘されているように、「ライブ」データベースを一掃するか、template0から再作成する必要がある場合があります。
-d
と-f
同時に。pg_restore: options -d/--dbname and -f/--file cannot be used together
cannot be used together
こちらを参照してください。stackoverflow.com/questions/27882070/...
バックアップを作成する
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
-F cはカスタム形式(圧縮され、-j Nと並行して実行可能)-bはblobを含み、-vは冗長、-fはバックアップファイル名
バックアップから復元
pg_restore -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
-h localhost-オプションを設定することが重要
postgres
データベースに対する完全な権限を取得するには、としてログインする必要がある場合があります。
su - postgres
psql -l # will list all databases on Postgres cluster
pg_dump / pg_restore
pg_dump -U username -f backup.dump database_name -Fc
スイッチ-F
はバックアップファイルのフォーマットを指定します:
c
圧縮され、最小のバックアップファイルサイズになるカスタムPostgreSQL形式を使用しますd
各ファイルが1つのテーブルであるディレクトリの場合t
TARアーカイブ用(カスタム形式より大きい)-h
/ --host
サーバーが実行されているマシンのホスト名を指定します-W
/ --password
フォースpg_dump
データベースに接続する前にパスワードのプロンプトへバックアップを復元:
pg_restore -d database_name -U username -C backup.dump
パラメータ-C
は、データをインポートする前にデータベースを作成する必要があります。それが機能しない場合は、常にデータベースを作成できます。コマンドを使用(postgres
データベースを作成する権限を持つユーザーまたは他のアカウントとして)createdb db_name -O owner
pg_dump / psql
引数を指定しなかった場合は、-F
デフォルトのプレーンテキストSQL形式が使用されました(またはとともに使用されました-F p
)。その後、使用できませんpg_restore
。でデータをインポートできますpsql
。
バックアップ:
pg_dump -U username -f backup.sql database_name
戻す:
psql -d database_name -f backup.sql
postgres
)にパスワードが設定されている場合にpsqlを使用しているときに、-W
オプションを使用する必要があります。たとえば、Ubuntuでsu postgres
ターミナルから何もせず$ psql -h localhost -U postgres -W -d DB_NAME < DB_BACKUP.sql
に、ローカルホストにバックアップを復元するために私が働いたコマンドです。-h
オプションが必要であることに注意してください。
-W
オプションは絶対に必須ではありません。pg_dump
サーバーがパスワード認証を要求すると、自動的にパスワードの入力を求められます。またPGPASSWORD
、プレーンテキストのパスワードを使用している場合は、env変数を使用できます。-h
デフォルトPGHOST
が適用されない場合に必要です。これらのオプションは多くのPostgreSQLユーティリティに共通なので、この質問に答える必要はありません(設定に大きく依存します)。
pg_dump/psql
部分は私にとっては仕事です。しかし、最初の部分pg_dump/pg_restore
は、私にとって復元のために機能しません。ありがとうございました。
-Fc
以下は、pg_dump
データベースの復元に使用する私のバージョンです。
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
または使用psql
:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
ここで、-h
ホスト、-p
ポート、-u
ログインユーザー-d
名、データベースの名前
my_new_database
を使用する場合psql
、すでに存在している必要がありますか?
GZIPによるバックアップと復元
より大きなサイズのデータベースの場合、これは非常に良いです
バックアップ
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
戻す
gunzip -c mydb.pgsql.gz | psql dbname -U user
gunzip -c mydb.pgsql.gz | sudo -u postgres psql
ます。データベースを操作する権限を取得する。また--clean
、ダンプ時にフラグを考慮してください。これにより、既存のデータがすべて消去され、便利になる場合があります。
これは私のために働きました:
pg_restore --verbose --clean --no-acl --no-owner --host=localhost --dbname=db_name --username=username latest.dump
--no-owner
本当に助けてくれました。
1.ターミナルを開きます。
2.次のコマンドでデータベースをバックアップします
postgres bin-/opt/PostgreSQL/9.1/bin/
ソースデータベースサーバー-192.168.1.111
バックアップファイルの場所と名前-/home/dinesh/db/mydb.backup
ソースデータベース名-mydatabase
/opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111' --port 5432 --username "postgres" --no-password --format custom --blobs --file "/ home / dinesh / db /mydb.backup "" mydatabase "
3. mydb.backupファイルを宛先に復元します。
宛先サーバー-localhost
宛先データベース名-mydatabase
バックアップを復元するためのデータベースを作成します。
/opt/PostgreSQL/9.1/bin/psql -h 'localhost' -p 5432 -U postgres -c "CREATE DATABASE mydatabase"
バックアップを復元します。
/opt/PostgreSQL/9.1/bin/pg_restore --host 'localhost' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/ home / dinesh / db / mydb。バックアップ"
pg_dumpを使用してバックアップを作成すると、次の方法で簡単に復元できます。
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
これを試して:
psql -U <username> -d <dbname> -f <filename>.sql
.sqlファイルからDB psqlを復元する
以下のリンクで述べたように、psqlコマンドを使用してダンプファイルを復元できます。
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
ユーザー名を設定する必要がある場合は、次のようなコマンドの後にユーザー名を追加します。
psql dbname < infile username
試してください:
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
postgresバックアップファイルの復元は、最初にどのようにバックアップを作成したかによって異なります。
-F cまたは-F dでpg_dumpを使用した場合は、pg_restoreを使用する必要があります。それ以外の場合は、
psql -h localhost -p 5432 -U postgres <バックアップファイル
ネクロポストは申し訳ありませんが、これらの解決策は私にはうまくいきませんでした。私はpostgres 10を使用しています。Linuxの場合:
service postgresql-10 restart
ディレクトリをbackup.sqlのある場所に変更して実行します。
psql postgres -d database_name -1 -f backup.sql
-database_nameは私のデータベースの名前です
-backup.sqlは、.sqlバックアップファイルの名前です。
pg_dumpの実行時に認証の問題が発生したため、ダンプファイルを移動しました
mv database_dump /tmp
一時ディレクトリに入れて実行しました
su -u postgres
cd /tmp
pg_restore database_dump
大きなデータベースダンプがある場合は、現在のユーザーとpostgresユーザーがアクセスしてデータベースダンプファイルをそこに置くことができる別のディレクトリを作成することもできます。
バックアップSQLファイルがある場合は、簡単に復元できます。以下に示す指示に従ってください
1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example: cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql
必要に応じてpostgresユーザーのパスワードを入力し、Postgresにその作業を任せます。次に、復元プロセスを確認できます。
データをバックアップしたり、バックアップからデータを復元したりする場合は、次のコマンドを実行できます。
データのバックアップを作成するにC:\programfiles\postgres\10\bin\
は、次のようにpostgres \ bin \ディレクトリに移動し、次のコマンドを入力します。
pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup
バックアップからデータを復元するには、次のようにpostgres \ bin \ディレクトリに移動し、C:\programfiles\postgres\10\bin\
以下のコマンドを入力します。
C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup
バックアップファイルが存在することを確認してください。
下の例を見てください
C:/ Program Files / PostgreSQL / 9.4 / bin \ pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "newDatabase" --no-password --verbose
「C:\ Users \ Yogesh \ Downloads \ new Download \ DB.backup」