[pgsql-jp: 33570] Re: pgpool 2.0.2 報告
Tatsuo Ishii
t-ishii @ sra.co.jp
2004年 7月 9日 (金) 11:56:36 JST
石井です.
> 西尾です。
>
> >ログを見る限り,マスタとセカンダリのDB内容が異なっているようです.
> >
> >マスタとセカンダリの両方で直接以下の問い合わせを実行し,
> >
> >SELECT c.oid,
> > n.nspname,
> > c.relname
> >FROM pg_catalog.pg_class c
> > LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
> >WHERE pg_catalog.pg_table_is_visible(c.oid)
> > AND c.relname ~ '^bbb$'
> >ORDER BY 2, 3;
> >
> まず、テーブルの構成ですが、
> CREATE TABLE aaa(i INTEGER,j TEXT);
> で、作成し、データが
> i | j
> ---+---
> 1 | A
> 2 | B
> 3 | C
> (3 rows)
>
> だけの簡単なものです。
> それで、SQLでの問合せ結果ですが、
> ・マスタ
> aaa=# SELECT c.oid,n.nspname,c.relname FROM pg_catalog.pg_class c
> aaa-# LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
> aaa-# WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relname ~ '^bbb$'
> aaa-# ORDER BY 2, 3;
> oid | nspname | relname
> --------+---------+---------
> 365464 | public | bbb
> (1 row)
>
> ・セカンダリ
> aaa=# SELECT c.oid,n.nspname,c.relname FROM pg_catalog.pg_class c
> aaa-# LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
> aaa-# WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relname ~ '^bbb$'
> aaa-# ORDER BY 2, 3;
> oid | nspname | relname
> --------+---------+---------
> 329894 | public | bbb
> (1 row)
> となります。
OIDが大きくずれていますね.pgpoolは,スタート時にデータベースクラスタの
物理的な内容が一致していることを前提にしています.この前提から外れた使
い方をしていませんか?
> >こっちの方はログには出ていないようで,ちょっとわかりません.何か確実な
> >再現方法はないでしょうか?
> >--
> >Tatsuo Ishii
> >
> こちらの環境では、psqlの\dや、"vacuumdb -p 9999 -a -z"を行うと必ずエラーが
> 発生するのですが。(ただし、"vacuumdb -p 9999 -z aaa"ではエラー無し)
> 別の方法として、マスタかセカンダリのデータをどちらかDELETEした後で、pgpoolで
> で、SELECT文を投げてやるとエラーが発生し、繰り返すとプロセスが1つずつ消えてい
> くのを確認しました。
うーん,こちらでは再現しません.
--
Tatsuo Ishii
pgsql-jp メーリングリストの案内