[pgsql-jp: 37587] 高負荷状態時にデータ破損の可能性

Mitsutoshi Nakamura gmataw @ bitvalue.com
2006年 10月 19日 (木) 18:05:49 JST


中村@東京です。

先日、PHP で構築した運用中の会員サイトのメンバー情報テーブルを
ある時点の状態に戻すという作業を行なった時に、操作したメンバー
情報テーブル以外もデータが破損してしまうという現象がありました。

該当 DB は 60 テーブルで構成されており、データが不正になっていた
テーブルは(現状確認出来たのは)2 テーブルのみです。
※復旧作業に追われている為、全テーブルの内容は確認出来てません

確認できた不正なテーブルの内容は以下の 2 パターンになります。

1.一部の行のフィールドがずれた様な内容に変わっている
2.全てのデータが 3 倍の件数になっている

状況(サーバーの高負荷等)によっては、上記の様な事は有りうるの
でしょうか?

■環境
OS : RHEL3
DB : PostgreSQL7.1.3
AP : PHP4.3.7

■cron
毎時 15 分に pg_dump にてバックアップを作成している。
ファイルサイズは 170M 程度。

■実行内容
1.作業用に db_tmp_1 を作成
$ createdb db_tmp_1

2.db_tmp_1 に復旧したい日時の DB を構築
$ psql db_tmp_1 < 200610xx-xxxx.dmp

3.上記 No.2 の作業(違う時間のダンプファイル)を複数回実施

--- 補足 1 ---
作業開始時間としては 16:00 頃からで、WEB のアクセスも頻繁にあり
cron の実行時間と重なったときは負荷平均率が 8.00 程度までいって
いたと記憶しています。

--- 補足 2 ---
データ破損は運用中 DB のメンバーテーブルを変更する作業の前に
発生している。

また、上記作業中は私自身混乱しており手作業のミスでデータを壊して
しまったのか、それともある条件下では上記の様な事が起こり得るのか
という事を調査しております。


以上、皆様のアドバイスを頂けると幸いです。




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