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は復旧できるかどうかドキドキ
するので、精神的によくない・・・。