XX001: data_corrupted
PostgreSQL意味
PostgreSQL がテーブル/ヒープページでデータ破損を検出した。読み取ったブロックの内容に不整合があるため、クエリを安全に完了できない ('invalid page in block')。
原因
ディスク/ストレージ障害、ファイルシステムの破損、突然の電源喪失時に fsync の保証が守られなかった、ハードウェアの故障 (RAM/コントローラ)、またはまれにソフトウェアのバグ。チェックサムを有効にしていれば、破損はより早期に検出される。
対処方法
まずハードウェア/ストレージを確認し、可能であれば直ちに物理バックアップ (PITR) への切戻しを計画する。正常なバックアップがあればリストアする。復旧のため、データを失うリスクを承知のうえで最後の手段としてのみ、zero_damaged_pages = on で破損ページをゼロ化し、読み取れるデータをエクスポートできる (データ損失を伴う)。data_checksums を有効にし (既存クラスタでは PG12+ でサーバー停止中に pg_checksums --enable)、RAM テストを実施し、定期的に PITR バックアップを取得する。