pg_dump と pg_dumpall のどちらをデータベースのバックアップに使用すればよいですか? 質問する

pg_dump と pg_dumpall のどちらをデータベースのバックアップに使用すればよいですか? 質問する

試してみてpg_dump、別のマシンでSQLをインポートしてデータベースにデータを入力しようとしました。

CREATE TABLE
ERROR:  role "prod" does not exist
CREATE TABLE
ERROR:  role "prod" does not exist
CREATE TABLE
ERROR:  role "prod" does not exist
CREATE TABLE
ERROR:  role "prod" does not exist
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
WARNING:  no privileges could be revoked for "public"
REVOKE
ERROR:  role "postgres" does not exist
ERROR:  role "postgres" does not exist
WARNING:  no privileges were granted for "public"
GRANT

つまり、私のuser情報rolesgrantpg_dump

一方、私たちはpg_dumpall、私が読んだ会話、これではどこにもたどり着けないのでしょうか?

質問
- データベースのバックアップにはどちらを使用すればよいですか?pg_dumpまたはpg_dumpall?
- 要件は、バックアップを取得でき、どのマシンにもインポートでき、問題なく動作することです。

ベストアンサー1

通常のプロセスは次のとおりです。

  • pg_dumpall --globals-onlyユーザー/ロールなどを取得する
  • pg_dump -Fc各データベースに対して、 で使用するのに適した圧縮ダンプを取得しますpg_restore

はい、これはちょっと残念です。出力をダンプにpg_dump埋め込む方法を教えたいのですが、残念ながら現時点ではその方法がわからないため、自分で行う必要があります。pg_dumpall-Fc

PostgreSQL 11 までは、このアプローチには厄介な警告もありました。 、pg_dump、モードpg_dumpallのどちらも、 のユーザーアクセスを に--globals-onlyダンプしませんでした。そのため、カタログからそれらを抽出するか、 をフィルターする必要がありました。これは PostgreSQL 11 で修正されました。GRANTDATABASEpg_dumpallリリースノート

pg_dump がデータベースの内容だけでなくプロパティもダンプするようにします (Haribabu Kommi)

GRANT以前は、データベース レベルの/REVOKE権限や変数設定などのデータベース自体の属性はALTER DATABASE SET、 によってのみダンプされていましたpg_dumpall。現在pg_dump --create、とpg_restore --createは、データベース内のオブジェクトに加えて、これらのデータベース プロパティを復元します。pg_dumpall -g現在、 はロールおよびテーブルスペース関連の属性のみをダンプします。pg_dumpallの完全な出力 (-g なし) は変更されていません。


また、物理バックアップ、pg_basebackupPgBarman、WAL アーカイブ、PITR などについても知っておく必要があります。これらは、分単位または個々のトランザクションに至るまで、はるかに「きめ細かい」リカバリを提供します。欠点は、より多くのスペースを占有し、同じプラットフォーム上の同じ PostgreSQL バージョンにのみ復元可能であり、すべてのデータベースのすべてのテーブルをバックアップし、何も除外できないことです。

おすすめ記事