Read it later.

Web製作に関するサーバ構成やコーディングネタの備忘録として使ってます。

*

[Postgres]invalid page header in block

   

[Postgres]invalid page header in block

下記のような素敵なエラーに、突然出会いました。

ERROR:  invalid page header in block 63815 of relation "table01"
CONTEXT:  SQL statement "SELECT  * FROM table01"
PL/pgSQL function "stored_procedure_01" line 251 at IF

ネットで調べてみると、こんな記事がありました。
c/fe 障害

これは、データベースの物理ファイルの破損を意味している。

発生したタイミングは、データベースのバックアップを復元したときに発生した模様。
僕の場合は、クラウド環境下だったので、物理的なHDDの不良は考えられなかったので、該当テーブルを再作成して対処しました。

なので、復元の際に下記のような手順で、エラーが発生していないかをチェックするとより確実な運用が出来ると思う

  1. postgresql.confを見て、postgresのログファイルがどこに出力されているかを確認
    # locate postgresql.conf
    # vi /var/lib/pgsql/data/postgresql.conf
    

    僕の環境下では下記のように設定されていました。

    # These are only used if logging_collector is on:
    log_directory = 'pg_log'                # directory where log files are written,
                                            # can be absolute or relative to PGDATA
    
  2. postgresのログファイルの出力先ディレクトリに対し、『ERROR』という文字列でGREPで検索して、エラー内容を確認
    # locate data/pg_log
    # cd /var/lib/pgsql/data/pg_log/
    # find . -name \*.* -print | xargs grep 'ERROR' > grep_ERROR.txt
    # vi grep_ERROR.txt
    

 - PostgreSQL

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  関連記事

postgresql
[Postgres]全データベースの物理ファイルサイズを取得

■全てのデータベースの物理的なファイルサイズを取得する