[pgsql-jp: 36707] pgpool使用時のSERIAL型の取り扱いについて
Motoki Ito
m_itoux @ yahoo.co.jp
2006年 2月 9日 (木) 10:42:02 JST
伊藤と申します。
pgpool 2.6にてSERIAL型を含むテーブルの同期を取ることができるようになった
と認識しておりますが、下記SQLを発行した場合同期がとれず困っております。
select nextval('hoge_seq')
環境としてはDBサーバAをマスタとし(PostgreSql+pgpool)でDBサーバ
B(PostgreSqlのみ)をセカンダリとしています。
いろいろ試した結果以下の2つの方法ではPHPプログラムからでも、psql上からで
も同期がとれました。SQL発行はDBサーバAのport5432に見えるPostgreSqlです。
成功例1
begin
select nextval('hoge_seq')
commit
成功例2
/*INSERT LOCK*/ select nextval('hoge_seq')
例2の記述=insert_lockディレクティブがtrueと認識していましたが間違ってい
るのでしょうか?
可能であれば、明示的にトランザクションを掛けたり/*INSERT LOCK*/を記述し
たくなく、いい解決があればと思っています。
また、成功例1についてはトランザクション内ですがロックを掛けておりません。
これでもうまくいってしまうのもよくわかりませんでした。
pgpoolの設定ミスかも知れませんが、ご存知の方がいらっしゃいましたら、ご教
授ください。
ちなみにpgpoolの設定は下記のようになります。
(以下はpool_statusで表示された中から関係なさそうなのを省いた物です。)
port | 5432
socket_dir | /tmp
backend_host_name | 192.168.0.201
backend_port | 5431
secondary_backend_host_name | 192.168.0.202
secondary_backend_port | 5431
connection_life_time | 0
replication_mode | 1
replication_strict | 1
replication_timeout | 5000
load_balance_mode | 1
replication_stop_on_mismatch | 0
print_timestamp | 1
master_slave_mode | 0
connection_cache | 1
insert_lock | 1
current_backend_host_name | 192.168.0.201
current_backend_port | 5431
replication_enabled | 1
master_slave_enabled | 0
--------------------------------------
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE PARTNER
http://pr.mail.yahoo.co.jp/ganbare-nippon/
pgsql-jp メーリングリストの案内