[pgcluster: 793] pgreplicate が起動され続ける
Masaichi Hasegawa
hasegawa.masaichi @ lab.ntt.co.jp
2005年 7月 21日 (木) 16:32:22 JST
はせがわといいます。
pgcluster+pgbenchで性能測定したいのですが、以下の状況になり測定できません。
解決方法等ありますでしょうか?
1. 状況:pgbenchの初期化を行うとpgreplicateが終了しないで、
pgreplicateが起動され続ける。
pgbenchは終了しますが、postgresqlのログファイルから想像すると
同期が終了していないと思われます。
2. 構成
OS : RHEL ES3
Linux spade02 2.4.21-15.0.2.ELsmp #1 SMP Wed Jun 16 22:52:07 EDT 2004 i686 i686 i386 GNU/Linux
H/W : [CPU] HyperTherding OFF
S/W : pgcluster 1.1.1a
: pgbench(postgresql 7.4.2版)
pglb x 1
pgreplicate x 2
pg x 2
3. ログ
ログ内の<<>>は私の操作及び状況説明です。
3-1-1. pg(Master)のログ
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "branches_pkey" for table "branches"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "tellers_pkey" for table "tellers"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "accounts_pkey" for table "accounts"
3-1-2. pg(Secondary)のログ
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "branches_pkey" for table "branches"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "tellers_pkey" for table "tellers"
3-1-3. pgreplicate(Master)のログ
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "tellers_pkey" for table "tellers"
DEBUG:sem_unlock[1]
DEBUG:replicate_loop():replicate_loop selected
DEBUG:replicate_loop():replicate_loop selected
DEBUG:PGRreplicate_packet_send():cmdSts=Q
DEBUG:PGRreplicate_packet_send():cmdType=O
DEBUG:PGRreplicate_packet_send():rlog=0
DEBUG:PGRreplicate_packet_send():request_id=560
DEBUG:PGRreplicate_packet_send():replicate_id=0
DEBUG:PGRreplicate_packet_send():port=5435
DEBUG:PGRreplicate_packet_send():pid=17024
DEBUG:PGRreplicate_packet_send():from_host=spade01
DEBUG:PGRreplicate_packet_send():dbName=pgbench
DEBUG:PGRreplicate_packet_send():userName=postgres
DEBUG:PGRreplicate_packet_send():recieve sec=1121922843
DEBUG:PGRreplicate_packet_send():recieve usec=393842
DEBUG:PGRreplicate_packet_send():query_size=42
DEBUG:PGRreplicate_packet_send():query=alter table accounts add primary key (aid)
DEBUG:sem_lock[1]
DEBUG:PGRreturn_result():PGRreturn_result[]
DEBUG:PGRreturn_result():status of PGRreturn_result[0]
DEBUG:send_sync_data():sync_command(SELECT PGR_SYSTEM_COMMAND_FUNCTION(3,1121922843,393842,0,1) )
<<pgbench -i終了>>
DEBUG:replicate_loop():replicate_loop selected
DEBUG:replicate_loop():replicate_loop selected
DEBUG:PGRwrite_rlog():delete_query_log
DEBUG:PGRreplicate_packet_send():cmdSts=Q
DEBUG:PGRreplicate_packet_send():cmdType=t
DEBUG:PGRreplicate_packet_send():rlog=3
DEBUG:PGRreplicate_packet_send():request_id=561
DEBUG:PGRreplicate_packet_send():replicate_id=0
DEBUG:PGRreplicate_packet_send():port=5435
DEBUG:PGRreplicate_packet_send():pid=17024
DEBUG:PGRreplicate_packet_send():from_host=spade01
DEBUG:PGRreplicate_packet_send():dbName=pgbench
DEBUG:PGRreplicate_packet_send():userName=postgres
DEBUG:PGRreplicate_packet_send():recieve sec=1121922936
DEBUG:PGRreplicate_packet_send():recieve usec=356961
DEBUG:PGRreplicate_packet_send():query_size=0
DEBUG:PGRreplicate_packet_send():query=RESET ALL
DEBUG:sem_lock[1]
<<何もしていないが、以下が表示されるたびにpgreplicateがforkされる>>
DEBUG:replicate_loop():replicate_loop selected
DEBUG:replicate_loop():replicate_loop selected
DEBUG:PGRwrite_rlog():delete_query_log
DEBUG:PGRreplicate_packet_send():cmdSts=Q
DEBUG:PGRreplicate_packet_send():cmdType=t
DEBUG:PGRreplicate_packet_send():rlog=3
DEBUG:PGRreplicate_packet_send():request_id=561
DEBUG:PGRreplicate_packet_send():replicate_id=0
DEBUG:PGRreplicate_packet_send():port=5435
DEBUG:PGRreplicate_packet_send():pid=17024
DEBUG:PGRreplicate_packet_send():from_host=spade01
DEBUG:PGRreplicate_packet_send():dbName=pgbench
DEBUG:PGRreplicate_packet_send():userName=postgres
DEBUG:PGRreplicate_packet_send():recieve sec=1121923026
DEBUG:PGRreplicate_packet_send():recieve usec=356151
DEBUG:PGRreplicate_packet_send():query_size=0
DEBUG:PGRreplicate_packet_send():query=RESET ALL
DEBUG:sem_lock[1]
3-1-4. pgreplicate(slave)のログ
<<pgrelicate(master)をCtrl+Cで終了した>>
DEBUG:replicate_loop():replicate_loop selected
DEBUG:replicate_loop(): PGRread_packet failed query[(null)] cmdSys[]
ERROR:replicate_loop():upper cascade closed
DEBUG:do_rlog(): CMD_STS_QUERY_SUSPEND
DEBUG:replicate_loop():replicate loop exit
DEBUG:replicate_loop():replicate_loop selected
DEBUG:replicate_loop():replicate_loop selected
DEBUG:PGRwrite_rlog():delete_query_log
DEBUG:PGRreplicate_packet_send():cmdSts=Q
DEBUG:PGRreplicate_packet_send():cmdType=t
DEBUG:PGRreplicate_packet_send():rlog=3
DEBUG:PGRreplicate_packet_send():request_id=561
DEBUG:PGRreplicate_packet_send():replicate_id=0
DEBUG:PGRreplicate_packet_send():port=5435
DEBUG:PGRreplicate_packet_send():pid=17024
DEBUG:PGRreplicate_packet_send():from_host=spade01
DEBUG:PGRreplicate_packet_send():dbName=pgbench
DEBUG:PGRreplicate_packet_send():userName=postgres
DEBUG:PGRreplicate_packet_send():recieve sec=1121923307
DEBUG:PGRreplicate_packet_send():recieve usec=276317
DEBUG:PGRreplicate_packet_send():query_size=0
DEBUG:PGRreplicate_packet_send():query=RESET ALL
DEBUG:sem_lock[1]
DEBUG:PGRreturn_result():PGRreturn_result[]
DEBUG:PGRreturn_result():status of PGRreturn_result[0]
DEBUG:pgr_createConn():PQsetdbLogin host[spade02] port[5435] db[pgbench] user[postgres]
DEBUG:pgr_createConn():PQsetdbLogin ok
DEBUG:is_executed_query():sync_command(SELECT PGR_SYSTEM_COMMAND_FUNCTION(6,1121923307,276317,0,1) )
DEBUG:sem_unlock[1]
DEBUG:replicate_loop():replicate_loop selected
DEBUG:use[2] host[spade01] port[5435] life[7201] rec[1]
DEBUG:use[2] host[spade02] port[5435] life[7201] rec[2]
3-1-5. pg(Secondary)のログ
<<pgrelicate(master)をCtrl+Cで終了した>>
LOG: could not send data to client: パイプが切断されました
LOG: unexpected EOF on client connection
LOG: unexpected EOF on client connection
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "accounts_pkey" for table "accounts"
LOG: could not send data to client: パイプが切断されました
LOG: unexpected EOF on client connection
4. 設定ファイル
4-1. pg(master)
#============================================================
# Cluster DB Server configuration file
#------------------------------------------------------------
<Replicate_Server_Info>
<Host_Name> joker01-hb </Host_Name>
<Port> 8001 </Port>
<Recovery_Port> 8101 </Recovery_Port>
<LifeCheck_Port> 8201 </LifeCheck_Port>
</Replicate_Server_Info>
<Replicate_Server_Info>
<Host_Name> joker02-hb </Host_Name>
<Port> 8002 </Port>
<Recovery_Port> 8102 </Recovery_Port>
<LifeCheck_Port> 8202 </LifeCheck_Port>
</Replicate_Server_Info>
#-------------------------------------------------------------
# set Cluster DB Server information
#-------------------------------------------------------------
<Recovery_Port> 7101 </Recovery_Port>
<LifeCheck_Port> 7201 </LifeCheck_Port>
<Rsync_Path> /usr/bin/rsync </Rsync_Path>
<Rsync_Option> ssh -1 </Rsync_Option>
# <When_Stand_Alone> read_write </When_Stand_Alone>
<When_Stand_Alone> read_only </When_Stand_Alone>
<Status_Log_File> /tmp/cluster_spade01.sts </Status_Log_File>
<Error_Log_File> /tmp/cluster_spade01.log </Error_Log_File>
4-2. pg(secondary)
#============================================================
# Cluster DB Server configuration file
#------------------------------------------------------------
<Replicate_Server_Info>
<Host_Name> joker01-hb </Host_Name>
<Port> 8001 </Port>
<Recovery_Port> 8101 </Recovery_Port>
<LifeCheck_Port> 8201 </LifeCheck_Port>
</Replicate_Server_Info>
<Replicate_Server_Info>
<Host_Name> joker02-hb </Host_Name>
<Port> 8002 </Port>
<Recovery_Port> 8102 </Recovery_Port>
<LifeCheck_Port> 8202 </LifeCheck_Port>
</Replicate_Server_Info>
#-------------------------------------------------------------
# set Cluster DB Server information
#-------------------------------------------------------------
<Recovery_Port> 7101 </Recovery_Port>
<LifeCheck_Port> 7201 </LifeCheck_Port>
<Rsync_Path> /usr/bin/rsync </Rsync_Path>
<Rsync_Option> ssh -1 </Rsync_Option>
# <When_Stand_Alone> read_write </When_Stand_Alone>
<When_Stand_Alone> read_only </When_Stand_Alone>
<Status_Log_File> /tmp/cluster_spade02.sts </Status_Log_File>
<Error_Log_File> /tmp/cluster_spade02.log </Error_Log_File>
4-3. pgreplicate(master)
#=============================================================
# PGReplicate configuration file
# for PGCluster-1.1.0a
#=============================================================
#-------------------------------------------------------------
# A setup of Cluster DB(s)
#-------------------------------------------------------------
<Cluster_Server_Info>
<Host_Name> spade01-db </Host_Name>
<Port> 5435 </Port>
<Recovery_Port> 7101 </Recovery_Port>
<LifeCheck_Port> 7201 </LifeCheck_Port>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> spade02-db </Host_Name>
<Port> 5435 </Port>
<Recovery_Port> 7101 </Recovery_Port>
<LifeCheck_Port> 7201 </LifeCheck_Port>
</Cluster_Server_Info>
#-------------------------------------------------------------
# A setup of Load Balance Server
#-------------------------------------------------------------
<LoadBalance_Server_Info>
<Host_Name> heart01-db </Host_Name>
<Recovery_Port> 6101 </Recovery_Port>
<LifeCheck_Port> 6201 </LifeCheck_Port>
</LoadBalance_Server_Info>
#-------------------------------------------------------------
# A setup of a replication server
#-------------------------------------------------------------
<Status_Log_File> /tmp/pgreplicate_joker01.sts </Status_Log_File>
<Error_Log_File> /tmp/pgreplicate_joker01.log </Error_Log_File>
<Replication_Port> 8001 </Replication_Port>
<Recovery_Port> 8101 </Recovery_Port>
<LifeCheck_Port> 8201 </LifeCheck_Port>
<RLOG_Port> 8301 </RLOG_Port>
#<Response_Mode> reliable </Response_Mode>
<Response_Mode> normal </Response_Mode>
<Use_Replication_Log> yes </Use_Replication_Log>
<Reserved_Connections> 1 </Reserved_Connections>
4-4. pgreplicate(slave)
#=============================================================
# PGReplicate configuration file
# for PGCluster-1.1.0a
#-------------------------------------------------------------
# A setup of Cluster DB(s)
##-------------------------------------------------------------
<Cluster_Server_Info>
<Host_Name> spade01-db </Host_Name>
<Port> 5435 </Port>
<Recovery_Port> 7101 </Recovery_Port>
<LifeCheck_Port> 7201 </LifeCheck_Port>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> spade02-db </Host_Name>
<Port> 5435 </Port>
<Recovery_Port> 7101 </Recovery_Port>
<LifeCheck_Port> 7201 </LifeCheck_Port>
</Cluster_Server_Info>
#-------------------------------------------------------------
# A setup of Load Balance Server
#rt : connection for life check process
#-------------------------------------------------------------
<LoadBalance_Server_Info>
<Host_Name> heart01-db </Host_Name>
<Recovery_Port> 6101 </Recovery_Port>
<LifeCheck_Port> 6201 </LifeCheck_Port>
</LoadBalance_Server_Info>
#------------------------------------------------------------
# A setup of the upper replication server for cascade connection.
#------------------------------------------------------------
<Replicate_Server_Info>
<Host_Name> joker01-db </Host_Name>
<Port> 8001 </Port>
<Recovery_Port> 8101 </Recovery_Port>
<LifeCheck_Port> 8201 </LifeCheck_Port>
</Replicate_Server_Info>
#-------------------------------------------------------------
# A setup of a replication server
#-------------------------------------------------------------
<Status_Log_File> /tmp/pgreplicate_joker02.sts </Status_Log_File>
<Error_Log_File> /tmp/pgreplicate_joker02.log </Error_Log_File>
<Replication_Port> 8001 </Replication_Port>
<Recovery_Port> 8101 </Recovery_Port>
<LifeCheck_Port> 8201 </LifeCheck_Port>
<RLOG_Port> 8301 </RLOG_Port>
#<Response_Mode> reliable </Response_Mode>
<Response_Mode> normal </Response_Mode>
<Use_Replication_Log> yes </Use_Replication_Log>
<Reserved_Connections> 1 </Reserved_Connections>
4-5. pglb
#============================================================
# Load Balance Server configuration file
#-------------------------------------------------------------
# set cluster DB server information
#-------------------------------------------------------------
<Cluster_Server_Info>
<Host_Name> spade01-db </Host_Name>
<Port> 5435 </Port>
<Max_Connect> 128 </Max_Connect>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> spade02-db </Host_Name>
<Port> 5435 </Port>
<Max_Connect> 128 </Max_Connect>
</Cluster_Server_Info>
#-------------------------------------------------------------
# set Load Balance server information
#-------------------------------------------------------------
<Backend_Socket_Dir> /tmp </Backend_Socket_Dir>
<Receive_Port> 5432 </Receive_Port>
<Recovery_Port> 6101 </Recovery_Port>
<LifeCheck_Port> 6201 </LifeCheck_Port>
<Max_Cluster_Num> 2 </Max_Cluster_Num>
<Use_Connection_Pooling> yes </Use_Connection_Pooling>
以上。
--
NTT SP研 OSP 長谷川雅一 <hasegawa.masaichi @ lab.ntt.co.jp>
pgcluster メーリングリストの案内