[pgsql-jp: 40201] WAL転送でのトラブル

Yoshinori Teraoka teraoka.yoshinori @ gmail.com
2010年 3月 10日 (水) 15:49:39 JST


寺岡ともうします。

Cent OS 4.x (64bit)で PostgreSQL 8.3.7 を使っています。
WAL転送で standby を構成しており、Linux のトラブルにより
切り替えを行ったのですが

pg_start_backup()
から
pg_stop_backup()

の間に更新されたレコードについて更新前と更新後の2つのレコードが
存在する状態となってしまいました。

重複したレコードは id という column を PRIMARY KEY としており
id で select しても1行しか出てきませんが pg_dump では出力され、
インポート時に問題がでます。

select oid, * from message where id = xxx;
で取り出すとインデックスが使われないためか2行でてきます。

# cat 00000001000001270000007B.0026EC28.backup
START WAL LOCATION: 127/7B26EC28 (file 00000001000001270000007B)
STOP WAL LOCATION: 127/7C4DA378 (file 00000001000001270000007C)
CHECKPOINT LOCATION: 127/7B334960
START TIME: 2010-03-03 02:33:42 JST
LABEL: setup warm standby
STOP TIME: 2010-03-03 02:40:55 JST


standby 側起動時のログ

2010-03-03 02:46:15 JST user=, db=, remote=, pid=7844, xid=0 LOG:
database system was interrupted; last known up at 2010-03-03 02:38:58
JST
2010-03-03 02:46:15 JST user=, db=, remote=, pid=7844, xid=0 LOG:
starting archive recovery
2010-03-03 02:46:15 JST user=, db=, remote=, pid=7844, xid=0 LOG:
restore_command = '/apps/scripts/postgres/wsrecovery.sh %f %p'
2010-03-03 02:46:15 JST user=, db=, remote=, pid=7844, xid=0 LOG:
restored log file "00000001000001270000007C" from archive
2010-03-03 02:46:15 JST user=, db=, remote=, pid=7844, xid=0 LOG:
automatic recovery in progress
2010-03-03 02:46:15 JST user=, db=, remote=, pid=7844, xid=0 LOG:
redo starts at 127/7C0D1420
2010-03-03 02:46:15 JST user=, db=, remote=, pid=7844, xid=0 LOG:
restored log file "00000001000001270000007D" from archive
2010-03-03 02:50:55 JST user=, db=, remote=, pid=7844, xid=0 LOG:
restored log file "00000001000001270000007E" from archive
2010-03-03 02:55:55 JST user=, db=, remote=, pid=7844, xid=0 LOG:
restored log file "00000001000001270000007F" from archive
2010-03-03 03:00:55 JST user=, db=, remote=, pid=7844, xid=0 LOG:
restored log file "000000010000012700000080" from archive

なにか、原因として考えられるものはあるでしょうか。

PostgreSQL 8.3.8 の ChangeLog にある

  Force WAL segment switch during pg_start_backup() (Heikki)

  This avoids corner cases that could render a base backup unusable.

は、関係するでしょうか。

-- 
Teraoka Yoshinori


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