web-dev-qa-db-ja.com

PostgreSQL pgAdmin 4でバックアップ/復元する方法は?

ですから、これは非常に基本的で簡単にできることだと感じています。

SQL Serverのバックアップと同等のことをしたいのですが。完全な.bakファイルに相当するものを作成し、データベースを元の状態に復元できるようにしたいと考えています。

これまで、PgAdmin4でさまざまな方法を試して、新しく作成したデータベースからバックアップファイルを作成しました。一連のテーブルを作成するスキーマを移行してから、以前に作成したファイルで復元を実行します。復元後に期待するのは、作成したすべてのテーブルが失われることです。データベースは、バックアップを取得したときとまったく同じ状態になっているはずです。

バックアップ/復元でデータを保持/保存しないCreate/Drop Databaseコマンドなど、さまざまなオプションを試しましたが、うまくいきませんでした。

ここで私を手伝ってくれる人はいますか?

コマンドを使用していますpg_dump mydb -Fc > dbおよびpg_restore db。たぶん、私が上で求めていることを実行するために欠けているいくつかの魔法のパラメータがありますか?

試しましたpg_restore --clean db、同じ結果。

問題は、何もない状態でデータベースを新しく作成し、データベースのバックアップを取り、いくつかのテーブルを作成し、バックアップを復元しても、作成したテーブルがまだ残っていることです。バックアップしたときと同じ状態にdbを置く復元方法が必要です。

6
James

コミュニティWikiの回答

回避策として、pgAdminを忘れて、コマンドラインからpg_dumpを実行してください。

25.1を参照してください。バックアップと復元のドキュメントのSQL Dump

また、pg_restore手動エントリ から:

-c
--clean

再作成する前に、データベースオブジェクトをクリーン(ドロップ)します。 (--if-existsを使用しない限り、宛先データベースにオブジェクトが存在しなかった場合、無害なエラーメッセージが生成される可能性があります。)

-C
--create
復元する前にデータベースを作成します。 --cleanも指定されている場合は、接続する前にターゲットデータベースを削除して再作成します。

このオプションを使用すると、-dという名前のデータベースは、最初のDROP DATABASEおよびCREATE DATABASEコマンドを発行するためにのみ使用されます。すべてのデータは、アーカイブに表示されるデータベース名に復元されます。

...または、データベースを復元する前に手動で削除するだけです。

から なぜpg_restoreは正常に戻るが実際にはデータベースを復元しないのですか? スタックオーバーフローで、接続時に--dbnameも指定する必要があります。まったく。

1
user126897

ドキュメントが役立つかもしれません

pg_dumpは「バックアップダイアログ」、pg_dumpallは「バックアップサーバーダイアログ」のように思えます。

  • バックアップダイアログ

    pg_dumpユーティリティを使用して、pgAdminはプレーンテキスト形式またはアーカイブ形式でバックアップを作成する簡単な方法を提供します。次に、クライアントアプリケーション(psqlやクエリツールなど)を使用してプレーンテキストのバックアップファイルを復元するか、Postgres pg_restoreユーティリティを使用してアーカイブされたバックアップを復元します。pg_dumpユーティリティには、バックアップするすべてのデータベースオブジェクトへの読み取りアクセス権が必要です。

  • バックアップサーバーダイアログ

    [サーバーのバックアップ]ダイアログを使用して、選択したサーバーを再作成するプレーンテキストスクリプトを作成します。 pgAdminクエリツールを使用してプレーンテキストスクリプトを再生し、サーバーを再作成できます。

1
Evan Carroll

--cleanで役立つパラメータpg_restoreは、pgAdmin 4復元ダイアログの[復元オプション]タブにある[復元前にクリーンアップ]オプションに変換されます。

このオプションは、バックアップを復元する前に既存のテーブルやデータを復元プロセスで削除する場合に必要です。

0
David