[pgcluster: 537] Re: リカバリーできない
kazunari takahashi
kazunari.takahashi @ ctc-g.co.jp
2004年 9月 14日 (火) 16:40:42 JST
高橋です.
度々申し訳ございません..
手順に誤りがありました.
> ----------------------------
> 3.serverCのpostmasterを落とす
> -----------------------------
>
> $ pg_ctl stop -D /usr/local/pgsql/data -m i
serverC→serverB
の誤りです.
> ----------------------------
> 4.serverAのpostmasterを起動
> ----------------------------
serverA→serverB
の誤りです.
以上 宜しくお願いいたします.
On Tue, 14 Sep 2004 16:32:50 +0900
kazunari takahashi <kazunari.takahashi @ ctc-g.co.jp> wrote:
> 高橋です.
>
> リカバリできない現象が発生しております.
> 以前見たメッセージですので、/etc/hostsなど調べたのですが、
> 問題なさそうに見えます.
> 行き詰まってしまったので、どなたか助力ください.
> createdbやcreateuserは問題なくできました.
> 個人的には、デバックログ中の
> DEBUG(pgr_createConn): PQsetdbLogin host[serverA] port[5432] db[template1] user[root]
> が怪しいかなと思い、再度postgresユーザで、コンパイルしてみました.
> ちなみに、各サーバともインターフェースは2つついており、
> 片方を使用しております.
>
>
> ####################################
> #環境
> ####################################
> pgcluster-1.0.8RC2
>
> clusterDB ×2 (solaris8 sparc) host名:serverA , serverB
> rgrp × 1 (solaris8 sparc)
>
>
> ####################################
> #手順
> ####################################
>
>
> -------------------------
> 1.テーブル作成
> -------------------------
>
> test=> create TABLE test(id serial , name varchar(10));
> NOTICE: CREATE TABLE will create implicit sequence 'test_id_seq' for SERIAL column 'test.id'
> CREATE TABLE
>
> -------------------------
> 2.データをclusterDB上からインサート
> -------------------------
>
> test=> insert into test(name) values('a');
> INSERT 33366 1
>
> 2clusterDBとも正常にインサートされる.
>
> ----------------------------
> 3.serverCのpostmasterを落とす
> -----------------------------
>
> $ pg_ctl stop -D /usr/local/pgsql/data -m i
>
> -------------------------
> 2.データをclusterDB上からインサート
> -------------------------
>
> test=> insert into test(name) values('b');
> INSERT 33366 1
>
> serverAに正常にインサートされる.
>
> ----------------------------
> 4.serverAのpostmasterを起動
> ----------------------------
> serverB% pg_ctl start -D /usr/local/pgsql/data -o "-i -R"
> postmaster successfully started
> serverB% Start in recovery mode!
> Please wait until a data synchronization finishes from Master DB...
> /usr/local/pgsql/bin/postmaster: sorry, recovery failed.
>
> ---------------
> デバックログ
> ---------------
>
> DEBUG(replicate_loop): wait replicate
>
> DEBUG(replicate_loop): wait replicate
>
> DEBUG(replicate_loop): replicate main: selected
>
> DEBUG(pgrecovery_loop): recovery accept port 8101
>
> DEBUG(read_packet): receive packet no:1
>
> DEBUG(first_setup_recovery): 1st setup target serverB
>
> DEBUG(first_setup_recovery): 1st setup port 5432
>
> DEBUG(first_setup_recovery): check another recovery process
>
> DEBUG(PGRsem_unlock): add recovery target to host table
>
> DEBUG(PGRsend_load_balance_packet): set RECOVERY_PGDATA_REQ packet data
>
> DEBUG(PGRsend_replicate_packet_to_server): host(serverA) : port(5432)
> DEBUG(getTransactionTbl): not found in getTransactionTbl
> DEBUG(pgr_createConn): PQsetdbLogin host[serverA] port[5432] db[template1] user[root]
> DEBUG(replicate_loop): wait replicate
>
> ERROR(pgr_createConn): PQsetdbLogin failed. close socket!!
> ERROR(write_log_file): PQsetdbLogin failed. close socket!!
> ERROR(write_log_file): PQsetdbLogin failed. close socket!!
> ERROR(write_log_file): PQsetdbLogin failed. close socket!!
> ERROR(write_log_file): PQsetdbLogin failed. close socket!!
> ERROR(write_log_file): dbPersistLogin timeout
> ERROR(write_log_file): New Transaction but pgr_createConn failed
> ERROR(write_log_file): 5432 @ serverA is not ready
> ERROR(write_log_file): setTransactionTbl failed
> ERROR(write_log_file): vacuum error , master may be down
>
> DEBUG(PGRsem_unlock): 1st master - 0
> DEBUG(PGRsem_unlock): 1st target serverB - 5432
> DEBUG(pgrecovery_loop): recovery accept port 8101
>
> DEBUG(read_packet): receive packet no:200
>
> DEBUG(read_packet): recovery error accept. top queueing and initiarse recovery status
>
> DEBUG(PGRsend_queue): master - 0
>
> ERROR(PGRget_HostTbl): master table is null
>
> DEBUG(replicate_loop): replicate_loop selected
>
> DEBUG(PGRclear_connections): replicate loop exit
>
> ---------------
> /etc/hosts
> ---------------
>
> レプリケーションサーバ上で、
> $ grep serverA /etc/hosts
> 192.168.1.181 serverA
> $ grep serverB /etc/hosts
> 192.168.1.183 serverB
>
> ---------------
> pgreplicate.conf
> ---------------
> eventrp01% cat /usr/local/pgsql/etc/pgreplicate.conf
> #=============================================================
> # PGReplicate configuration file
> #-------------------------------------------------------------
> # file: pgreplicate.conf
> #-------------------------------------------------------------
> # This file controls:
> # o which hosts & port are cluster server
> # o which port use for replication request from cluster server
> #=============================================================
> #
> #-------------------------------------------------------------
> # A setup of Cluster DB(s)
> #
> # o Host_Name : The host name of Cluster DB.
> # -- please write a host name by FQDN.
> # -- do not write IP address.
> # o Port : The connection port with postmaster.
> # o Recovery_Port : The connection port at the time of
> # a recovery sequence .
> #-------------------------------------------------------------
> <Cluster_Server_Info>
> <Host_Name> serverA </Host_Name>
> <Port> 5432 </Port>
> <Recovery_Port> 8102 </Recovery_Port>
> </Cluster_Server_Info>
> <Cluster_Server_Info>
> <Host_Name> serverB </Host_Name>
> <Port> 5432 </Port>
> <Recovery_Port> 8102 </Recovery_Port>
> </Cluster_Server_Info>
> #<Cluster_Server_Info>
> # <Host_Name> cluster3.postgres.jp </Host_Name>
> # <Port> 5432 </Port>
> # <Recovery_Port> 7779 </Recovery_Port>
> #</Cluster_Server_Info>
> #
> #-------------------------------------------------------------
> # A setup of Load Balance Server
> #
> # o Host_Name : The host name of a load balance server.
> # -- please write a host name by FQDN.
> # -- do not write IP address.
> # o Recovery_Port : The connection port at the time of
> # a recovery sequence .
> #-------------------------------------------------------------
> #<LoadBalance_Server_Info>
> # <Host_Name> loadbalancer.postgres.jp </Host_Name>
> # <Recovery_Port> 7780 </Recovery_Port>
> #</LoadBalance_Server_Info>
> #
> #------------------------------------------------------------
> # A setup of the upper replication server for cascade connection.
> #
> # o Host_Name : The host name of Cluster DB.
> # -- please write a host name by FQDN.
> # -- do not write IP address.
> # o Port : The connection port with postmaster.
> # o Recovery_Port : The connection port at the time of
> # a recovery sequence .
> #------------------------------------------------------------
> #<Replicate_Server_Info>
> # <Host_Name> upper_replicate.postgres.jp </Host_Name>
> # <Port> 8002 </Port>
> # <Recovery_Port> 8102 </Recovery_Port>
> #</Replicate_Server_Info>
> #
> #-------------------------------------------------------------
> # A setup of a replication server
> #
> # o Replicate_Port : connection for reprication
> # o Recovery_Port : connection for recovery
> # o Response_mode : timing which returns a response
> # normal -- return result of DB which received the query
> # reliable -- return result after waiting for response of
> # all Cluster DBs.
> #-------------------------------------------------------------
> <Replication_Port> 8001 </Replication_Port>
> <Recovery_Port> 8101 </Recovery_Port>
> <Response_Mode> reliable </Response_Mode>
>
> ---------------
> cluster.conf
> ---------------
> serverB% cat /usr/local/pgsql/data/cluster.conf
> #============================================================
> # Cluster DB Server configuration file
> #------------------------------------------------------------
> # file: cluster.conf
> #------------------------------------------------------------
> # This file controls:
> # o which hosts & port are replication server
> # o which port use for replication request to replication server
> # o which command use for recovery function
> #============================================================
> #------------------------------------------------------------
> # set Replication Server information
> # o Host_Name : hostname
> # o Port : connection for postmaster
> # o Recovery_Port : connection for recovery process
> #------------------------------------------------------------
> <Replicate_Server_Info>
> <Host_Name> eventrp01 </Host_Name>
> <Port> 8001 </Port>
> <Recovery_Port> 8101 </Recovery_Port>
> </Replicate_Server_Info>
> #<Replicate_Server_Info>
> # <Host_Name> replicate2.postgres.jp </Host_Name>
> # <Port> 8002 </Port>
> # <Recovery_Port> 8102 </Recovery_Port>
> #</Replicate_Server_Info>
> #<Replicate_Server_Info>
> # <Host_Name> replicate3.postgres.jp </Host_Name>
> # <Port> 8003 </Port>
> # <Recovery_Port> 8103 </Recovery_Port>
> #</Replicate_Server_Info>
> #-------------------------------------------------------------
> # set Cluster DB Server information
> # o Recovery_Port : connection for recovery
> # o Rsync_Path : path of rsync command
> # o Rsync_Option : file transfer option for rsync
> # o When_Stand_Alone : When all replication servers fell,
> # you can set up two kinds of permittion,
> # "real_only" or "read_write".
> #-------------------------------------------------------------
> <Recovery_Port> 8102 </Recovery_Port>
> <Rsync_Path> /usr/local/bin/rsync </Rsync_Path>
> <Rsync_Option> ssh -1 </Rsync_Option>
> <When_Stand_Alone> read_only </When_Stand_Alone>
> #-------------------------------------------------------------
> # set partitional replicate control information
> # set DB name and Table name to stop reprication
> # o DB_Name : DB name
> # o Table_Name : table name
> #-------------------------------------------------------------
> #<Not_Replicate_Info>
> # <DB_Name> test_db </DB_Name>
> # <Table_Name> log_table </Table_Name>
> #</Not_Replicate_Info>
>
> ---------------
> pg_hba.conf(serverA,B)
> ---------------
> serverA% pwd
> /usr/local/pgsql
> serverA% cat data/pg_hba.conf
> # PostgreSQL Client Authentication Configuration File
> # ===================================================
> #
> # Refer to the PostgreSQL Administrator's Guide, chapter "Client
> # Authentication" for a complete description. A short synopsis
> # follows.
> #
> # This file controls: which hosts are allowed to connect, how clients
> # are authenticated, which PostgreSQL user names they can use, which
> # databases they can access. Records take one of three forms:
> #
> # local DATABASE USER METHOD [OPTION]
> # host DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION]
> # hostssl DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION]
> #
> # (The uppercase quantities should be replaced by actual values.)
> # DATABASE can be "all", "sameuser", "samegroup", a database name (or
> # a comma-separated list thereof), or a file name prefixed with "@".
> # USER can be "all", an actual user name or a group name prefixed with
> # "+" or a list containing either. IP-ADDRESS and IP-MASK specify the
> # set of hosts the record matches. METHOD can be "trust", "reject",
> # "md5", "crypt", "password", "krb4", "krb5", "ident", or "pam". Note
> # that "password" uses clear-text passwords; "md5" is preferred for
> # encrypted passwords. OPTION is the ident map or the name of the PAM
> # service.
> #
> # This file is read on server startup and when the postmaster receives
> # a SIGHUP signal. If you edit the file on a running system, you have
> # to SIGHUP the postmaster for the changes to take effect, or use
> # "pg_ctl reload".
>
> # Put your actual configuration here
> # ----------------------------------
> #
> # CAUTION: The default configuration allows any local user to connect
> # using any PostgreSQL user name, including the superuser, over either
> # Unix-domain sockets or TCP/IP. If you are on a multiple-user
> # machine, the default configuration is probably too liberal for you.
> # Change it to use something other than "trust" authentication.
> #
> # If you want to allow non-local connections, you need to add more
> # "host" records. Also, remember TCP/IP connections are only enabled
> # if you enable "tcpip_socket" in postgresql.conf.
>
> # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
>
> local all all trust
> host all all 127.0.0.1 255.255.255.255 trust
> host all all 192.168.1.0 255.255.255.0 trust
>
>
> 高橋 一成 <kazunari.takahashi @ ctc-g.co.jp>
高橋 一成 <kazunari.takahashi @ ctc-g.co.jp>
pgcluster メーリングリストの案内