argius note

プログラミング関連

PostgreSQLがクラッシュ

現象の詳細はわからないが、共有PC(WindowsXP)上に立てているPostgreSQLサーバがOSごとフリーズ。再起動するが、PostgreSQLのデータのブロックが壊れてしまったらしい。一週間ほど前にも同じような現象があったが、ついにやってしまった。4日前にバックアップがあったので被害は少なかったが、当日にやや重要なデータを登録していたため、一部データのサルベージを敢行。
データディレクトリの下にあるglobalにそれらしきファイルがある。データの文字コードUTF-8のようで、日付とキーワードで絞りこんでGREPすると、ちゃんと残ってた。一部バイナリなのでそのまま使えるわけではないが、思ったよりなんとかなりそう。ただし、文字型データ以外(数値や日付)はテキストでは見えないので、スクリプトか何かで置換&整形してCSVかTAB区切りテキストにしてやれば使えそう。
いずれにしろ、定期的なバックアップは必要だ。ちなみに、ちょっと前からCVS*1の日時バックアップは取るようにしたんだが、PostgreSQLのバックアップはユーザ権限の問題が面倒でやってなかった。あと、VACUUMをやっておくべきだったかも。

*1:CSVCVSが同時に登場すると誤字に見えるんじゃないか