2008年7月19日土曜日

PostgreSQL:データの更新ができない

PostgreSQLで3年ほど運用しているシステムがある。
そのシステムのユーザーの方から、
「データの表示や新規レコードの追加はできるのに、
 更新ができない」
と連絡があった。

ポスグレのログを見ると、

ERROR: could not open segment 1 of relation "hoge_tbl_pkey" (target block 270336): No such file or directory

と出ている(hoge_tbl部分は実際のテーブル名)。

どうやらインデックスが壊れているらしい、
ということで調べると、REINDEXというコマンドが
あるらしく、それを現地で試してみる。

REINDEX

psqlで、

# REINDEX TABLE hoge_tbl;

として実行。1時間ぐらいかかるのかと思いきゃ
ほんの10秒程度で終わり、無事DB復旧。
(ちなみにレコード件数は7万件弱)

ひとつ賢くなったけど、ユーザーさんには迷惑も
かけてしまったし、トラブルはなるべく起こって
ほしくないもんです。

なんといってもDBは復旧できるかどうかドキドキ
するので、精神的によくない・・・。