2016-08-01 7 views
0

のCentOS 6.7 のpostgresqlへの参照が含まれている9.5.3WALが無効ページ

私はマスタ - スタンバイ複製にあるDBサーバをしました。

突然、スタンバイサーバのpostgresqlプロセスがこのログで停止しました。

2016-07-14 18:14:19.544 JST [][5783e03b.3cdb][0][15579]WARNING: page 1671400 of relation base/16400/559613 is uninitialized 
2016-07-14 18:14:19.544 JST [][5783e03b.3cdb][0][15579]CONTEXT: xlog redo Heap2/VISIBLE: cutoff xid 1902107520 
2016-07-14 18:14:19.544 JST [][5783e03b.3cdb][0][15579]PANIC: WAL contains references to invalid pages 
2016-07-14 18:14:19.544 JST [][5783e03b.3cdb][0][15579]CONTEXT: xlog redo Heap2/VISIBLE: cutoff xid 1902107520 
2016-07-14 18:14:21.026 JST [][5783e038.3cd9][0][15577]LOG: startup process (PID 15579) was terminated by signal 6: Aborted 
2016-07-14 18:14:21.026 JST [][5783e038.3cd9][0][15577]LOG: terminating any other active server processes 

そして、マスターサーバーのpostgresqlログは特別なものではありませんでした。

ただし、マスターサーバーの/ var/log/messagesは次のように表示されます。

Jul 14 05:38:44 host kernel: sbridge: HANDLING MCE MEMORY ERROR 
Jul 14 05:38:44 host kernel: CPU 8: Machine Check Exception: 0 Bank 9: 8c000040000800c0 
Jul 14 05:38:44 host kernel: TSC 0 ADDR 1f7dad7000 MISC 90004000400008c PROCESSOR 0:306e4 TIME 1468442324 SOCKET 1 APIC 20 
Jul 14 05:38:44 host kernel: EDAC MC1: CE row 1, channel 0, label "CPU_SrcID#1_Channel#0_DIMM#1": 1 Unknown error(s): memory scrubbing on FATAL area : cpu=8 Err=0008:00c0 (ch=0), addr = 0x1f7dad7000 => socket=1, Channel=0(mask=1), rank=4 
Jul 14 05:38:44 host kernel: 
Jul 14 18:30:40 host kernel: sbridge: HANDLING MCE MEMORY ERROR 
Jul 14 18:30:40 host kernel: CPU 8: Machine Check Exception: 0 Bank 9: 8c000040000800c0 
Jul 14 18:30:40 host kernel: TSC 0 ADDR 1f7dad7000 MISC 90004000400008c PROCESSOR 0:306e4 TIME 1468488640 SOCKET 1 APIC 20 
Jul 14 18:30:41 host kernel: EDAC MC1: CE row 1, channel 0, label "CPU_SrcID#1_Channel#0_DIMM#1": 1 Unknown error(s): memory scrubbing on FATAL area : cpu=8 Err=0008:00c0 (ch=0), addr = 0x1f7dad7000 => socket=1, Channel=0(mask=1), rank=4 
Jul 14 18:30:41 host kernel: 

メモリエラーが1週間前に開始されました。だから、メモリエラーがpostgresqlのエラーを引き起こすのではないかと思います。

私の質問はこちらです。

1)カーネルのメモリエラーが原因で、postgresqlの "WALに無効なページへの参照が含まれています"というエラーが発生する可能性がありますか?

2)なぜマスターサーバーのpostgresqlにログがないのですか?

thx。

答えて

1

メモリに障害があると、すべての種類のデータが破損する可能性があります。そのため、十分に説明できます。

おそらく、マスターPostgreSQLサーバにログエントリがないのは、WALストリームだけだったからです。

あなたが559613.

をファイルに属しているテーブルを見つけるためにOID 16400を持っていたデータベースを見つけるために

oid2name 

を実行し、

oid2name -d <database with OID 16400> -f 559613 

することができますがより大きく、そのテーブルです12 GB?そうでない場合は、1671400ページが実際に無効な値であることを意味します。

あなたは使用しているPostgreSQLのバージョンを教えていませんでしたが、ハードウェアのバグがなくても複製の問題を引き起こす可能性のある複製のバグが後のバージョンで修正されている可能性があります。リリースノートを読んでください。

新しいpg_basebackupを実行し、スレーブシステムを再初期化します。

しかし、私はと言っています。実際にはがマスターサーバーのデータ破損の可能性があります。ブロックチェックサムはクールです(pg_controldata <data directory> | grep checksumが1になるとオンになります)が、メモリ破損の影響を検出しない可能性があります。

はマスターに

pg_dumpall -f /dev/null 

のようなものを試してみて、エラーがあるかどうかを確認します。

修理が必要な場合に備えて、古いバックアップを保管してください!

+0

ご回答いただきありがとうございます。 私のpostgresqlのバージョンは9.5.3です。 – Jinil

+0

それ以来、レプリケーションに関する既知のデータ破損のバグはありませんでした。 –

関連する問題