2016-08-29 31 views
0

最近Linuxマシンでハードウェア障害が発生し、ハードウェアの問題を修正してLinuxマシンを復旧した後、私のテーブル、次のエラーが返されます。PostgreSQLはファイル "base/xxxx/xxxxx"を開くことができませんでした。そのようなファイルやディレクトリはありません

ERROR: could not open file "base/17085/281016": No such file or directory. 

postgresql/base/17085ディレクトリにチェックマークを付けると、ファイル281016が存在しません。

以下のコマンドを使用して手動でファイルを作成すると問題は解決しますか?将来的にはより多くの問題を引き起こす悪いアプローチですか?

#touch 281016 
#chown postgres:postgres 281016 
#chmod 600 281016 

答えて

0

短い回答:バックアップからの復元。次に、安全でないシステムを実行しています。

長い答え:あなたがバックアップを持っていますが、貴重な教訓を学んだのデータベースを必要としないと仮定すると、

。バックアップをとってください。

単純な場合は、SELECT * FROM bad_tableが失敗していますが、それは問題のあるテーブルです。そうでなければ、COPYすぐにデータが出て、あなたは運が良かったし、それは破壊されたインデックスに過ぎません。

残りのテーブルをすべてダンプします。

次に、データを復元して実稼働状態に戻す前に、データが正常な状態であることを確認するためにいくつかのチェックを行います。

今、PostgreSQLのバグはありませんが、これは不可能ではありません。私たちはあなたのディスクがデータを報告していると推測しているファイルがないことを話しているので、実際にはそうでないときはflushed and syncedです。とにかくpostgresql.confのfsync設定を確認してください。

+0

返信ありがとうございました:) これは私のテストシステムです。ここのデータはあまりありません。バックアップからリストアするのが最良の選択肢になると思います。 このような問題が発生した場合に手動で不足しているファイルを作成することができるかどうか不思議であり、そのような手順には影響がありますか? –

+0

空のファイルを作成できますが、データベースが破損しています。破損したディスクブロックをゼロで埋めるか、同様にファイルを拡張すると便利なことがあります。次に、破損した部品の周りをダンプして、できるだけリカバリーすることができます。 *努力の価値がない場合は、前回のバックアップから復元し、更新を書き留めない方がよいでしょう。 –

関連する問題