[pgcluster: 94] solaris8環境でのレプリケーションサーバの動作について
kazunari takahashi
pgcluster@ml.postgresql.jp
Wed, 18 Feb 2004 18:08:01 +0900
はじめまして、高橋と申します.
現在、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>
以上 宜しくお願い致します.
---------------------------------------
高橋 一成