ライブデータベースでpg_dumpを実行すると、一貫したバックアップが作成されますか?


37

常に変更されている3GBのデータベースがあり、サーバーを停止せずにバックアップを作成する必要があります(Postgres 8.3)。

pg_dumpは5分間実行されます。プロセス中にデータが変更された場合はどうなりますか?一貫したバックアップを取得できますか?災害がいつ発生するかを知りたくありません。

Postgresのドキュメントhttp://www.postgresql.org/docs/8.3/static/app-pgdump.htmlはこれについて何も述べていません。


4
こんにちはロディック。災害が発生する前に復元プロセスをテストすることを強くお勧めします。別のマシンをセットアップし、バックアップの1つを使用して復元してテストします。
デレクダウニー

回答:


53

マニュアルから:

データベースが同時に使用されている場合でも、一貫したバックアップを作成します。

はい、バックアップを信頼できます。もちろん、それはPostgreSQLであり、PostgreSQLのデータを信頼できます。


10
「PostgreSQLのデータを信頼できます」を読んだとき、私は文字通り大爆笑しました:)
フランソワボーソレイユ

マニュアルへのリンクがあればいいと思います
パブロフェルナンデス14

1
@PabloFernandez:完了!
フランクハイケン14

1
ただし、ライブデータベースの論理バックアップはテーブルをロックします。この情報をお見逃しなく。多分あなたはいくつかのヒントを見つけるでしょう:compose.com/articles/…–
tryp

それで、何がそんなに面白いのかしてください。postgresqlの使用を停止する必要がありますか?
777Anon

12

pg_dumpは、他の長時間実行クエリの動作と同様に、トランザクションを開始します。一貫性の保証は、MVCC実装によるものです。ダンプは、これらのルール内で常に一貫性があります。

MVCCのすべてのファジー部分は、UPDATEトランザクションが他のクライアントに見える順序やロックの取得方法などの周りにあります。pg_dumpは順序について厳密であり、データベース全体の読み取りロックを取得してダンプします。ほとんどの人にとって、それは彼らが期待することであり、使用されるメカニズムは決してトラブルを引き起こしません。主な同時実行性のリスクは、データベース構造を変更しようとしているクライアントが、ダンプの実行中にブロックされることです。ただし、ダンプの品質には影響しません。


11

ダンプは、設定で始まりますTRANSACTION ISOLATION LEVEL SERIALIZABLE

トランザクション分離に関するマニュアル と、 これに関するユーザーリストの説明をお読みください。

見積もり:

バックアップには、分離レベルが設定される前にコミットされたトランザクションのみが表示されます。

基本的にpg_dump、トランザクション分離レベルを設定した後のすべては、このダンプの一部ではありません

その間、読み取り/書き込み操作は影響を受けません(ロックされます)。


-1

最初にこの古いスレッドについてお答えして申し訳ありません。しかし、私の経験から、pg_dump /を信頼できるという声明を確認することはできません

私は数か月前にプロジェクトをpostgresに切り替えました。そしてもちろん、提案されているように、ライブシステムからpg_dumpを使用してすべてのバックアップを作成しました。しかし、最初のバックアップチェックの後、すべてのダンプのサイズが異なることがわかりました。それらのいくつかをランダムに復元した後、いくつかのテーブルが欠落していることがわかりました。それで、なぜこれが起こるのかを分析し始め、オーバーレイするアプリケーション、例えばアプリサーバー、いくつかのテーブルとpg_dumpのロックが、それらが解放されるまで待たないことがわかりました。バックアップ期間中にサーバーを停止するたびに必要でしたが、これは良い解決策ではありません。

だから私はまだ修正を探していますが、私が言ったように、私はあなたがpg_dumpを信頼できるという声明に強く反対します。


それが起こると、それはpg_dumpで深刻になります。使用しているバージョンは何ですか?私の質問は3年前でしたが、今は9.3にあり、Amazon redsは明らかにpg_dumpを使用してライブバックアップを行います。彼らは間違ってはいけません。
ローマン

pg_dumpを信頼して、シリアル化されたバックアップを行うことができます(リンク/ドキュメントおよびいくつかの詳細については私の回答を参照してください)。 。挿入/更新/削除のみを行うため、テーブルの作成についてコメントすることはできません。私たちにとっては、pg_dump時間中にテーブルを作成しないようにしただけです。
デニス・ノルティ

2
あなたの声明は、深刻なバグ(バグレポートを提出したか?)、データベースをダンプする方法の深刻なバグ、または誤解を示しています。これらの中で決定できない事実を欠いている。
-dezso
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.