2011-06-13 9 views
2

PostgreSQLのデータディレクトリのバックアップを自動化するためのPythonスクリプトを作成して、 "Continuous Archiving and Point-In-Time Recovery"を有効にしています。python tarfileでpostgresqlデータディレクトリをバックアップします。予期/無視するエラー

Pythons tarfileライブラリを使用してアーカイブを作成します。

データファイルがバックアップ中に変更される可能性があります。 。PostgreSQL manualを引用すると:彼らは ファイルが コピーが進む一方で変更をコピーしようとしている場合

をいくつかのファイルシステムのバックアップツールは 警告やエラーを発しますアクティブデータベースのバックアップ のバックアップをとるとき、この の状況は正常であり、エラーではありません。 ただし、 はこの 並べ替えの苦情と実際のエラーを区別できることを確認する必要があります。 タールはそれをコピーしている間にファイルが切り捨てられた場合

... GNUのtarの一部 のバージョンでは、致命的なエラー と区別できないエラー コードを返します。 GNU tarバージョン1.16以降は、 のバックアップ中にファイルが変更された場合は1、その他のエラーの場合は2で終了します( )。

データディレクトリからファイルをコピーするとき、Pythonではどのような例外が予想されますか?そして、エラーが重大であるかどうかをどのように判断できますか?

答えて

1

tarfileモジュールを使用している場合、この実装は本質的にあなた次第です。 GNU tarは、ファイルを処理する前後でファイルサイズとctimeをチェックし、それらが異なっていると文句を言う。それは実際のエラーではない、それは言及すべきであるようにタールが感じるただのものです。しかし、あなたのユースケースでは、あなたはそれを気にしないので、あなたはただそれを忘れることができます。 tarfileモジュールは、これだけではそれ自体では不平を言うことはありません。

他の例外を除いて、可能性は無限です。この場合、Pythonがスローするほとんどのものはおそらく致命的です。

-1

連続アーカイブについては、PostgreSQLのマニュアルで説明しています。これは実装されており、追加のスクリプトを作成する必要はありませんが、多くのファイルがあります。

24.3.2。ベースバックアップを作成する - 指示に従うと、tarを作成できます。データファイルは変更されません。

24.3.1。 WALアーカイブの設定 - ここでは新しいWALファイルをアーカイブする必要があります。変更することはありませんが、別々のファイルです。

基本バックアップにWALファイルを追加することは安全ではないと思います。ベースバックアップにファイルを追加しているときにサーバーがクラッシュすると、破損する可能性があります。

+0

助けていただきありがとうございますが、このすべての部分を理解しました。私はちょうど最初のベースバックアップを行うためにPythonスクリプトを使用したい(私はすぐにリモートサーバーにストリームしたい)。私はちょうど "あなたがこの種の苦情と実際のエラーとを区別できるようにすること"を心配しています。私が実際にアーカイブしているWALファイル。 –

+0

あなたができる最良のことは、Pythons tarfileが必要に応じて動作するかどうかをテストすることです。 – jordani

+0

なぜ何かが動作する理由を知りたいのですが、特にPostgreSQLの考えられるすべての動作を再現することは容易ではないと思います –

関連する問題