[pgsql-jp: 31886] Re: レコードが自動的に消える

Kawasaki Yusuke u-suke @ kawa.net
2003年 12月 28日 (日) 21:27:17 JST


高橋さま、

川崎と申します。こんばんは。今日は寒いですねー。

・過去にOSの強制リブートがかかったことはありますか?
 ext3 なのでファイルシステムが壊れてもジャーナルで通常は
 回復されるはずですが、回復されない場合もあるようです。

・where 句の検索条件によって、select 結果からレコードが
 あるように見えたり、存在しなくなる場合もありますか?
 インデックスかテーブル本体の破損が考えられます。
 症状2によると、もっと重度かもしれませんね。(汗)

私もおそらくDBのリストアと、前者(過去に強制リブートが
かかったことがある)の場合は強制 fsck が必要と思います。
さらにDBダンプは fsck の前後とも計2回やって比較したほうが
安全かもしれません。
とはいえ既に壊れていて完全なダンプができない可能性もありますが、
それでも以後はデータが消える怖さはないので安心できます。

#ダンプ出力時に何らかのエラーで特定のレコードだけが抽出できず、
#oid 指定で特定のレコードを抜いてから、ダンプしたこともありました。

In "[pgsql-jp: 31885] レコードが自動的に消える",
At 2003/12/28 20:01:39, "TAKAHASHI Hidekazu" <hide @ saila.co.jp> wrote:
> まず、私の使用している環境は
> RedHat7.3(kernel-2.4.18-4.i686.rpm使用)
> ファイルシステムは、ext3
> 同じマシン上に、Apacheが動いています。
> PostgreSQLは、7.3.4
> データベースのサイズは、2GB程度です。
> DBアクセスしているプログラムは、CGIプログラムで、
> Pg.pmを使用しています。
> 上記の環境において、PostgreSQLを使用しています。
> 
> このような環境で、運用ミスで「vacuum」コマンドを
> 一度も実行させず、運用していましたところ、
> ほぼ3ヶ月に1度、特定のテーブルのレコードが消えてしまいました。
> このテーブルに対する更新処理はシステム上ありません。
> 
> この「消える」とは、
> 1)システムのカタログテーブル「g_tables」には、
>     当該テーブルはありません。
> 2)ただし、当該テーブルに対して「select * from 」とすると
>   属性項目だけは参照できますが、レコードは見えません
> という状態です。
> 
> こうなると、当方ではDBのリストアしか方法が思いつきません。
> そこで、この状態の解消方法、もしくは原因として考えられること、
> など情報をお持ちの方いましたら、ご教授頂けないでしょうか。

---- Kawasaki Yusuke <u-suke @ kawa.net>

> ――――――――――――――――――――――――――――― <
> 株式会社 かっぺ            Kappe Inc. <
> ――――――――――――――――――――――――――――― <
> 〒260-0045 千葉県千葉市中央区弁天2-22-6 Kappe Bld.    <
> TEL:043-256-2726 FAX:043-256-2731 MAIL:support @ kappe.co.jp <
> ――――――――――――――――――――――――――――― <




pgsql-jp メーリングリストの案内