[pgcluster: 94] solaris8環境でのレプリケーションサーバの動作について

kazunari takahashi kazunari.takahashi @ ctc-g.co.jp
2004年 2月 18日 (水) 18:08:01 JST


はじめまして、高橋と申します.

現在、PGClusterを用いてPostgreSQLのレプリケーション環境を構築すべく、
検証を進めております.
webの手順に従い、pgcluster-1.0.6のインストール・設定作業を終えた後、
クラスタサーバにてpsqlコマンドでDBにログインしようとすると、
レプリケーションサーバで、大量のデバッグメッセージとゾンビプロセスが生成され、
うまくレプリケーションができません.
どなたか、お知恵を拝借できませんでしょうか?

#--------------------------
#環境
#--------------------------
*レプリケーションサーバ
	・ホスト名:awamori            (Solaris8,GNU Make 3.80, gcc version 2.95.3)
*クラスターサーバ
	・ホスト名(マスタDB):ora01    (Solaris8,GNU Make version 3.79.1,gcc version 2.95.3)
	・ホスト名:king-kazu          (Solaris9,GNU Make 3.80,gcc version 3.3.2)

全サーバ、同一セグメント上に配置.ロードバランサーは使用しておりません.

#--------------------------
#インストール・設定
#--------------------------

・pgcluster-1.0.6(フルパッケージ版)を使用(pgcluster-1.0.6bではありません)
・webの手順に従い、postgresユーザで./configure + make + make install

※make時にisblank()がないとはじかれたので、
/usr/local/src/pgcluster-1.0.6/src/backend/replicate.cファイルに

  #ifndef isblank
  #define isblank(c)    ((c) == ' ' || (c) == '\t')
  #endif

を加えました.

 レプリケーションサーバは、さらに、
  % cd /usr/local/src/pgcluster-1.0.6/src/pgcluster/pgrp
  % ./configure --prefix=/usr/local/pgsql
  % make 
  % make install

・ssh,rsyncの動作を確認
・各サーバの/etc/hostsファイルにクラスタサーバ、レプリケーションサーバの登録を確認
・initdb -D /usr/local/pgsql/data -E EUC_JP --no-localeを全サーバで実行
・クラスタ−サーバでpg_hba.conf,postgres.conf,cluster.confの編集
・レプリケーションサーバで、pgreplicate.confを編集

#--------------------------
#プロセス起動
#--------------------------

1. レプリケーションサーバにて

awamori% pgreplicate -D /usr/local/pgsql/etc -nv

2. クラスターサーバにて

ora01% pg_ctl start -D /usr/local/pgsql/data -o "-i"
king-kazu% pg_ctl start -D /usr/local/pgsql/data -o "-i"

#--------------------------
#動作ログ(レプリケーションサーバ)
#--------------------------

awamori% pgreplicate -D /usr/local/pgsql/etc -nv

DEBUG(init_server_tbl): /usr/local/pgsql/etc/pgreplicate.log open ok

DEBUG(init_server_tbl): PGR_Get_Conf_Data ok
DEBUG(init_server_tbl): LoadBalanceTbl allocate ok
DEBUG(init_server_tbl): Conf data read ok
DEBUG(init_server_tbl): HostTbl shmget ok
DEBUG(init_server_tbl): HostTbl shmat ok
DEBUG(PGRrecovery_main): PGRrecovery_main bind port 7778
DEBUG(PGRrecovery_main): wait recovery

DEBUG(replicate_main): replicate mail 8777 port bind

DEBUG(replicate_main): replicate mail 8777 port bind OK

DEBUG(replicate_main): wait replicate

※※※※※※※※※※※※※※※※※※※※※※※※
※ここで、クラスターサーバ(ora01)を起動
※※※※※※※※※※※※※※※※※※※※※※※※

DEBUG(replicate_main): replicate main: selected

DEBUG(replicate_loop): wait replicate

※※※※※※※※※※※※※※※※※※※※※※※※
※ここで、クラスターサーバ(king-kazu)を起動
※※※※※※※※※※※※※※※※※※※※※※※※

DEBUG(replicate_loop): replicate main: selected

DEBUG(replicate_loop): wait replicate

※※※※※※※※※※※※※※※※※※※※※※※※
※ ここで、クラスターサーバ(ora01)にて 
※ $psql -U postgres template1  
※ を実行
※※※※※※※※※※※※※※※※※※※※※※※※

DEBUG(replicate_loop): replicate main: selected

DEBUG(replicate_loop): replicate_loop selected

DEBUG(read_packet): query size=5
DEBUG(read_packet): read query
DEBUG(read_packet): query :: BEGIN

DEBUG(replicate_packet_send): cmdSts=T

DEBUG(replicate_packet_send): cmdType=B

DEBUG(replicate_packet_send): port=5432

DEBUG(replicate_packet_send): pid=13414

DEBUG(replicate_packet_send): except_host=ora01

DEBUG(replicate_packet_send): from_host=ora01

DEBUG(replicate_packet_send): dbName=template1

DEBUG(replicate_packet_send): userName=postgres

DEBUG(replicate_packet_send): recieve sec=1077087593

DEBUG(replicate_packet_send): recieve usec=335511

DEBUG(replicate_packet_send): query_size=5

DEBUG(replicate_packet_send): query=BEGIN

DEBUG(get_ip_by_name): same host:5432 @ de8df883 - 5432 @ de8df883

DEBUG(get_ip_by_name): 5432 @ ora01 return trigger
DEBUG(return_result): 128[2,1077087593,335511]
DEBUG(return_result): return_result[2,1077087593,335511]
DEBUG(return_result): 128 send
DEBUG(get_ip_by_name): not same host:5432 @ de8df883 - 5432 @ 3b8df883

DEBUG(replicate_packet_send_each_server): except:5432 @ ora01 host:5432 @ king-kazu

DEBUG(replicate_packet_send_each_server): send replicate to:king-kazu

DEBUG(PGRsend_replicate_packet_to_server): host(king-kazu) : port(5432)
DEBUG(get_ip_by_name): not found in transaction tbl host ora01 db:template1 pid:13414

DEBUG(get_ip_by_name): not found in PGRgetTransactionTbl
DEBUG(get_ip_by_name): not found in transaction tbl host ora01 db:template1 pid:13414

DEBUG(replicate_loop): wait replicate

DEBUG(PGRcreateConn): PQsetdbLogin ok!!

DEBUG(insertTransactionTbl): db:template1 port:5432 user:postgres host:king-kazu query:BEGIN

DEBUG(insertTransactionTbl): sync_command(SELECT PGR_SYSTEM_COMMAND_FUNCTION(2,1077087593,335511)
)
DEBUG(replicate_loop): replicate main: selected

DEBUG(replicate_loop): replicate_loop selected

DEBUG(read_packet): query size=5
DEBUG(read_packet): read query
DEBUG(read_packet): query :: BEGIN

DEBUG(replicate_packet_send): cmdSts=T

DEBUG(replicate_packet_send): cmdType=B

DEBUG(replicate_packet_send): port=5432

DEBUG(replicate_packet_send): pid=18437

DEBUG(replicate_packet_send): except_host=king-kazu

DEBUG(replicate_packet_send): from_host=king-kazu

DEBUG(replicate_packet_send): dbName=template1

DEBUG(replicate_packet_send): userName=postgres

DEBUG(replicate_packet_send): recieve sec=1077087593

DEBUG(replicate_packet_send): recieve usec=742744

DEBUG(replicate_packet_send): query_size=5

DEBUG(replicate_packet_send): query=BEGIN

DEBUG(get_ip_by_name): not same host:5432 @ 3b8df883 - 5432 @ de8df883

DEBUG(replicate_packet_send_each_server): except:5432 @ king-kazu host:5432 @ ora01

DEBUG(replicate_packet_send_each_server): send replicate to:ora01

DEBUG(PGRsend_replicate_packet_to_server): host(ora01) : port(5432)
DEBUG(get_ip_by_name): not found in transaction tbl host king-kazu db:template1 pid:18437

DEBUG(get_ip_by_name): not found in PGRgetTransactionTbl
DEBUG(get_ip_by_name): not found in transaction tbl host king-kazu db:template1 pid:18437

DEBUG(replicate_loop): wait replicate

DEBUG(PGRcreateConn): PQsetdbLogin ok!!

DEBUG(insertTransactionTbl): db:template1 port:5432 user:postgres host:ora01 query:BEGIN

DEBUG(insertTransactionTbl): sync_command(SELECT PGR_SYSTEM_COMMAND_FUNCTION(2,1077087593,742744)
)
DEBUG(replicate_loop): replicate main: selected

DEBUG(replicate_loop): replicate_loop selected

DEBUG(read_packet): query size=5
DEBUG(read_packet): read query
DEBUG(read_packet): query :: BEGIN

DEBUG(replicate_packet_send): cmdSts=T

DEBUG(replicate_packet_send): cmdType=B

DEBUG(replicate_packet_send): port=5432

DEBUG(replicate_packet_send): pid=13415

DEBUG(replicate_packet_send): except_host=ora01

DEBUG(replicate_packet_send): from_host=ora01

DEBUG(replicate_packet_send): dbName=template1

DEBUG(replicate_packet_send): userName=postgres

DEBUG(replicate_packet_send): recieve sec=1077087593

DEBUG(replicate_packet_send): recieve usec=796716

DEBUG(replicate_packet_send): query_size=5

DEBUG(replicate_packet_send): query=BEGIN

DEBUG(get_ip_by_name): same host:5432 @ de8df883 - 5432 @ de8df883

DEBUG(get_ip_by_name): 5432 @ ora01 return trigger
DEBUG(return_result): 128[2,1077087593,796716]
DEBUG(return_result): return_result[2,1077087593,796716]
DEBUG(return_result): 128 send
DEBUG(get_ip_by_name): not same host:5432 @ de8df883 - 5432 @ 3b8df883

DEBUG(replicate_packet_send_each_server): except:5432 @ ora01 host:5432 @ king-kazu

DEBUG(replicate_packet_send_each_server): send replicate to:king-kazu
DEBUG(insertTransactionTbl): PQexec send :BEGIN

DEBUG(insertTransactionTbl): PQstatus(0)

DEBUG(PGRsend_replicate_packet_to_server): host(king-kazu) : port(5432)
DEBUG(get_ip_by_name): not found in transaction tbl host ora01 db:template1 pid:13415

DEBUG(get_ip_by_name): not found in PGRgetTransactionTbl
DEBUG(get_ip_by_name): not found in transaction tbl host ora01 db:template1 pid:13415

DEBUG(replicate_loop): wait replicate

DEBUG(PGRcreateConn): PQsetdbLogin ok!!

DEBUG(insertTransactionTbl): db:template1 port:5432 user:postgres host:king-kazu query:BEGIN

DEBUG(insertTransactionTbl): sync_command(SELECT PGR_SYSTEM_COMMAND_FUNCTION(2,1077087593,796716)
)


###############################################

上記のようなメッセージが出力され、ずっと止まりません.

また、この時に大量のゾンビプロセスが発生します.
下記は、psコマンドの一部です.実際にはもっと多くのゾンビプロセスが発生します.

awamori% ps -ef | grep post
postgres  2551  2542  0 15:50:12 pts/3    0:00 pgreplicate -D /usr/local/pgsql/etc -nv
postgres  2548  2542  0 15:49:47 pts/3    0:00 pgreplicate -D /usr/local/pgsql/etc -nv
postgres  2543  2542  0 15:48:56 pts/3    0:00 pgreplicate -D /usr/local/pgsql/etc -nv
postgres  2542  1832  0 15:48:55 pts/3    0:01 pgreplicate -D /usr/local/pgsql/etc -nv
postgres  2467  2465  0 15:44:23 pts/4    0:00 -zsh
postgres  3116  2542  0                   0:00 <defunct>
postgres  3118  2542  0                   0:00 <defunct>
postgres  3117  2542  0                   0:00 <defunct>
postgres  3119  2542  0                   0:00 <defunct>
postgres  3120  2542  0                   0:00 <defunct>
postgres  3121  2542  0                   0:00 <defunct>
postgres  3122  2542  0                   0:00 <defunct>
postgres  3123  2542  0                   0:00 <defunct>
postgres  3124  2542  0                   0:00 <defunct>
postgres  3125  2542  0                   0:00 <defunct>
postgres  3126  2542  0                   0:00 <defunct>
postgres  3127  2542  0                   0:00 <defunct>

以上 宜しくお願い致します.
---------------------------------------
高橋 一成 




pgcluster メーリングリストの案内