[pgsql-jp: 37315] Re: 特定のテーブルに全アクセスするとERROR: could not read block 1855 of relation 1663/115852/115869: Successと表示されます

管理者 admin @ true.jp
2006年 6月 29日 (木) 19:21:59 JST


中井さんY.Shmadaさん回答ありがとうございます。
中井さんの回答を受けてすぐにレンタルサーバ業者に再度確認をお願いしたと
ころ
ハードディスク故障もしくは該当データの破損のいずれかの可能性があります
。ハードディスクの交換を致しますのでデータのバックアップと交換の指示を
願います
との回答をいただきました。
今手順について確認中です。
(ソフトのインストールや調整などおこなうのだろうか?ハードディスクコピ
ーしてくれないのかな?)
取り敢えずシステムは一部の機能以外は動作しているようなので、クレームは
来ていないのですが、こういったものなのでしょうか?日々というか随時動作
している部分には影響が出ていないようなのです。


Y. Shimadaさんの<BE5635DF-4C3C-407F-903A-882D48B42CBC @ storgate.co.jp>から
>島田@Storgateともうします。
>
>On 2006/06/29, at 16:44, Hisakazu Nakai wrote:
>
>> 中井です。
>> 管理者 wrote:
>>> pg_dump: Error message from server: ERROR:  could not read block  
>>> 344 of relation 1663/115852/115874: Input/output error
>>> とエラーが出てしまいました。一部データは出力されているような 
>>> のですがど
>>> の様に考えれば良いのでしょうか?
>>> またレンタルサーバ業者(大手)に問い合わせたのですが、ハード 
>>> 障害は発生
>>> していないとのことです。
>
> ?ですね。
>その業者の方は、どんな根拠でハード障害ではないと判断されたので 
>しょうか?
>たんに、ハードエラーのメッセージが出ていないから。。。って
>ファイルシステムが壊れた(?)かも、
>過去の、/var/log/messages に何らかのヒントがあるかと。。思 
>います。
>今日(最近)だけでなく、出来うる限り過去にさかのぼってチェックし 
>ないと
>
>
>>> 復旧手段としてはどの様にすればよいのでしょうか。
>>
>> どうみてもハードディスクのエラーなので、復旧できないと思います。
>> データベースを停止して、tarでデータを吸い上げてみてはど 
>> うですか。
>> tarでデータを吸い上げるときにエラーメッセージが出る筈です。
>> 壊れているのは一部のデータ(ハードディスクの一部)なので、
>> それ以外のアクセスは問題ないでしょう。
>
>データベース(postmaster)を停止する前に、いまのうちに、
>pg_dump 等で、出来うる限り別ディスク(別サーバ)に、
>とれるだけ(エラーの出るテーブルは別にして、個別にテーブルを
>指定するなどして。、)のバックアップをとっておくことを、
>おすすめします。
>
>考えたくありませんが、万一、postmaster が再び正常起動でき 
>なく
>なってしまったら。。
>
>また、、
>
>On 2006/06/29, at 14:40, 管理者 wrote:
>
>> そこでテーブルにselect * from テーブル名
>> とその対象テーブルを覗いてみようとしたところ
>> ERROR:  could not read block 1855 of relation 1663/115852/115869:
>> Success
>> というメッセージが表示されました。
>> select * from テーブル名 where キー1=1
>> といった具合に検索対象を絞りこむと一部の時だけ上記のエラーメッ 
>> セージが
>> 表示されます。
>
>ということは、115869 は多分 oid なので、、、
>
>postgres サーバに postgresql 管理者アカウントでログインし、
>$PG_HOME、$PGDATA はそちらの環境に合わせてください。
>
>* iod2name は contrib にあります。
> $PG_HOME/bin の中になければ、別途、make する必要が 
>あるかもしれません。
>
>postgres $ $PG_HOME/bin/oid2name -d DB名 -t テーブル名
>
> (以下サンプル)
>  $ oid2name -d hogehoge -t hoge_tbl
>  Oid of table hoge_tbl from database "hogehoge":
>  ---------------------------------
>115869  = hoge_tbl
>
>とすれば、エラーのでるテーブルの oid が判ります。
>その結果、表示された oid が "115869"なら、ビンゴで、
>
>そこで、
>postgres $ find $PGDATA -name 115869 -ls
>
>とすれば、エラーの出ているファイルの path がわかります。
>HDD の固定的障害なら、find でもエラーが出るかもしれません。
>
> (以下サンプル)
>  $ cd $PGDATA
>  # find . -name 115869 -ls
>  79045 2192 -rw-r--r--   1 postgres postgres 22232  6月  
>29 14:52 ./base/.../115869
>
>次に、find でエラーが出なければ。。
>
>postgres $ cp -p ./base/.../115869 /tmp/.
>
>とかしてみれば、ファイルが読めるかどうかが判るはずです。
>エラーなら、/var/log/messages を確認してください。
>
>
>また、oid2name で表示された oid が "115869" で 
>ないなら、
>
>$ oid2name -d hogehoge -o 115869
>
>としてみると、oid "115869" をもつテーブル(インデックス等)
>が表示されるかと、、
> (以下サンプル)
>  $ oid2name -d hogehoge -o 115869
>  Tablename of oid 115869 from database "hogehoge":
>  ---------------------------------
>115869  = pg_toast_17406_index
>
>----
>
>
>
>
>__________ NOD32 1.1632 (20060629) Information __________
>
>This message was checked by NOD32 antivirus system.
>http://canon-sol.jp/product/nd



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