[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 メーリングリストの案内