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