Hell Friends, I am running the latest pgpool 2.2.4 version. I am having trouble with Failover. Our Database restarts at 12:30 am midnight every day, during this restart my pgpool does not reconnect back to DB and I need to restart the Pgpool.
When my DB restarts, I lose connection from pgpool to DB and I see message in pgpool log file as "no valid DB node found" and tries to failover. I have Failover configuration as failover_command = 'echo %h %p %d > ~/failover' and failback as failback_command = 'echo %h %p %d > ~/failback' *Is there a way that i can comment "Failover" in pgpool and pgpool reconnects to DB after restart? Or can I comment* failover_command and failback_command in pgpool configuration Here is the log file information 2009-08-28 00:06:31 ERROR: pid 32546: connection to 10.82.70.11(5432) failed 2009-08-28 00:06:31 ERROR: pid 32546: new_connection: create_cp() failed 2009-08-28 00:06:31 LOG: pid 32546: notice_backend_error: 0 fail over request from pid 32546 2009-08-28 00:06:31 LOG: pid 32500: starting degeneration. shutdown host 10.82.70.11(5432) 2009-08-28 00:06:31 ERROR: pid 32500: failover_handler: no valid DB node found 2009-08-28 00:06:31 LOG: pid 32500: execute command: echo 10.82.70.11 5432 0 > ~/failover 2009-08-28 00:06:31 LOG: pid 32500: failover_handler: set new master node: 1 2009-08-28 00:06:31 LOG: pid 32500: failover done. shutdown host 10.82.70.11(5432) 2009-08-28 00:07:31 LOG: pid 15665: Cannot accept() new connection. all backends are down 2009-08-28 00:08:31 LOG: pid 15601: Cannot accept() new connection. all backends are down 2009-08-28 00:09:31 LOG: pid 15664: Cannot accept() new connection. all backends are down 2009-08-28 00:10:31 LOG: pid 15624: Cannot accept() new connection. all backends are down 2009-08-28 00:20:31 LOG: pid 15656: Cannot accept() new connection. all backends are down 2009-08-28 00:30:31 LOG: pid 15661: Cannot accept() new connection. all backends are down 2009-08-28 00:40:31 LOG: pid 15652: Cannot accept() new connection. all backends are down 2009-08-28 00:50:31 LOG: pid 15662: Cannot accept() new connection. all backends are down 2009-08-28 01:00:31 LOG: pid 15653: Cannot accept() new connection. all backends are down 2009-08-28 01:10:31 LOG: pid 15663: Cannot accept() new connection. all backends are down 2009-08-28 01:15:17 LOG: pid 32500: received fast shutdown request stop request sent to pgpool. waiting for termination....done. 2009-08-28 01:15:21 LOG: pid 17908: pgpool successfully started 2009-08-28 01:16:16 LOG: pid 17973: connection received: host=[local] Here is my pgpool configuration # # pgpool-II configuration file sample # $Header: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample,v 1.26 2009/02/15 05:26:28 t-ishii Exp $ # Host name or IP address to listen on: '*' for all, '' for no TCP/IP # connections #listen_addresses = 'localhost' listen_addresses = '*' # Port number for pgpool #port = 9999 port = 5432 # Port number for pgpool communication manager pcp_port = 9898 # Unix domain socket path. (The Debian package defaults to # /var/run/postgresql.) socket_dir = '/tmp' # Unix domain socket path for pgpool communication manager. # (Debian package defaults to /var/run/postgresql) #pcp_socket_dir = '/tmp' pcp_socket_dir = '/var/run/pgpool' # Unix domain socket path for the backend. Debian package defaults to /var/run/postgresql! #backend_socket_dir = '/tmp' backend_socket_dir = '/var/run/pgpool' # pgpool communication manager timeout. 0 means no timeout, but strongly not recommended! #pcp_timeout = 10 pcp_timeout = 0 # number of pre-forked child process #num_init_children = 32 num_init_children = 64 # Number of connection pools allowed for a child process max_pool = 4 # If idle for this many seconds, child exits. 0 means no timeout. child_life_time = 300 # If idle for this many seconds, connection to PostgreSQL closes. # 0 means no timeout. connection_life_time = 0 # If child_max_connections connections were received, child exits. # 0 means no exit. child_max_connections = 0 # If client_idle_limit is n (n > 0), the client is forced to be # disconnected whenever after n seconds idle (even inside an explicit # transactions!) # 0 means no disconnect. client_idle_limit = 0 # Maximum time in seconds to complete client authentication. # 0 means no timeout. #authentication_timeout = 60 authentication_timeout = 0 # Logging directory #logdir = '/tmp' logdir = '/var/log/pgpool' # pid file name pid_file_name = '/var/run/pgpool/pgpool.pid' # Replication mode replication_mode = false #replication_mode = true # Load balancing mode, i.e., all SELECTs are load balanced. # This is ignored if replication_mode is false. load_balance_mode = false # if there's a data mismatch between master and secondary # start degeneration to stop replication mode replication_stop_on_mismatch = false # If true, replicate SELECT statement when load balancing is disabled. # If false, it is only sent to the master node. replicate_select = false # Semicolon separated list of queries to be issued at the end of a session reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT' # for 8.3 or newer PostgreSQL versions DISCARD ALL can be used as # follows. However beware that DISCARD ALL holds exclusive lock on # pg_listener so it will be a serious performance problem if there are # lots of concurrent sessions. # reset_query_list = 'ABORT; DISCARD ALL' # If true print timestamp on each log line. print_timestamp = true # If true, operate in master/slave mode. master_slave_mode = false # If true, cache connection pool. connection_cache = true # Health check timeout. 0 means no timeout. #health_check_timeout = 20 health_check_timeout = 0 # Health check period. 0 means no health check. health_check_period = 0 # Health check user #health_check_user = 'nobody' health_check_user = 'gpadmin' # Execute command by failover. # special values: %d = node id # %h = host name # %p = port number # %D = database cluster path # %m = new master node id # %M = old master node id # %% = '%' character # failover_command = 'echo %h %p %d > ~/failover' # Execute command by failback. # special values: %d = node id # %h = host name # %p = port number # %D = database cluster path # %m = new master node id # %M = old master node id # %% = '%' character # failback_command = 'echo %h %p %d > ~/failback' # If true, automatically locks a table with INSERT statements to keep # SERIAL data consistency. If the data does not have SERIAL data # type, no lock will be issued. An /*INSERT LOCK*/ comment has the # same effect. A /NO INSERT LOCK*/ comment disables the effect. insert_lock = true # If true, ignore leading white spaces of each query while pgpool judges # whether the query is a SELECT so that it can be load balanced. This # is useful for certain APIs such as DBI/DBD which is known to adding an # extra leading white space. #ignore_leading_white_space = true ignore_leading_white_space = false # If true, print all statements to the log. Like the log_statement option # to PostgreSQL, this allows for observing queries without engaging in full # debugging. #log_statement = false log_statement = true # If true, incoming connections will be printed to the log. #log_connections = false log_connections = true # If true, hostname will be shown in ps status. Also shown in # connection log if log_connections = true. # Be warned that this feature will add overhead to look up hostname. #log_hostname = false log_hostname = true # if non 0, run in parallel query mode parallel_mode = false # if non 0, use query cache enable_query_cache = false #enable_query_cache = true #set pgpool2 hostname pgpool2_hostname = '' # system DB info #system_db_hostname = 'localhost' #system_db_port = 5432 #system_db_dbname = 'pgpool' #system_db_schema = 'pgpool_catalog' #system_db_user = 'pgpool' #system_db_password = '' # backend_hostname, backend_port, backend_weight # here are examples #backend_hostname0 = 'host1' #backend_port0 = 5432 #backend_weight0 = 1 #backend_data_directory0 = '/data' #backend_hostname1 = 'host2' #backend_port1 = 5433 #backend_weight1 = 1 #backend_data_directory1 = '/data1' backend_hostname0 = '10.82.70.11' backend_port0 = 5432 backend_weight0 = 1 # - HBA - # If true, use pool_hba.conf for client authentication. In pgpool-II # 1.1, the default value is false. The default value will be true in # 1.2. enable_pool_hba = true # - online recovery - # online recovery user recovery_user = 'nobody' # online recovery password recovery_password = '' # execute a command in first stage. recovery_1st_stage_command = '' # execute a command in second stage. recovery_2nd_stage_command = '' # maximum time in seconds to wait for the recovering node's postmaster # start-up. 0 means no wait. # this is also used as a timer waiting for clients disconnected before # starting 2nd stage recovery_timeout = 90 # If client_idle_limit_in_recovery is n (n > 0), the client is forced # to be disconnected whenever after n seconds idle (even inside an # explicit transactions!) 0 means no disconnect. This parameter only # takes effect in recovery 2nd stage. client_idle_limit_in_recovery = 0 Any solution shall be greatly appreciated. Thanks Deepak Murthy
_______________________________________________ Pgpool-general mailing list [email protected] http://pgfoundry.org/mailman/listinfo/pgpool-general
