[Pgpool-general] [pgPool]

Hadadi Péter peter at bigfish.hu
Wed Feb 23 10:35:08 UTC 2011


Hi,

did you set up the system db on master node (port 5432)?

# 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 = ''

if you don't wan to use parallel query try to comment it out

-- 

is there a 'www-data' role in databases?

# Health check user
health_check_user = 'www-data'

try to use postgres as health check user

--

does your db nodes' pg_hba.conf file contains this row?

local   replication    postgres   trust

Peter



On 2/23/11 11:17 AM, Micka wrote:
> thx :
>
> mickael at PTI2:~$ sudo su - postgres
> postgres at PTI2:~$ /usr/lib/postgresql/9.0/bin/pg_ctl -D
> /usr/local/pgsql/data -l logpostgres start
> server starting
> postgres at PTI2:~$ psql -p 5432 -l
>                                   List of databases
>    Name    |  Owner   | Encoding |  Collation  |    Ctype    |  
> Access privileges
> -----------+----------+----------+-------------+-------------+-----------------------
>  postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8  |
>  template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
> =c/postgres          +
>                 |              |               |                    
> |                      | postgres=CTc/postgres
>  template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
> =c/postgres          +
>                 |               |              |                    
> |                      | postgres=CTc/postgres
> (3 rows)
>
>
> postgres at PTI2:~$ exit
> logout
> mickael at PTI2:~$ sudo mkdir /var/run/pgpool
> mickael at PTI2:~$ sudo chown www-data /var/run/pgpool/
> mickael at PTI2:~$ sudo chmod 777 -R /var/run/pgpool/      Otherwise i
> got : could not open pid file as /var/run/pgpool/pgpool.pid. reason:
> Permission denied
> mickael at PTI2:~$ sudo su - postgres
> postgres at PTI2:~$ pgpool -d -n > ~/pgpool.log 2>&1 &
>
> after a nano pgpool.log i got :
>
> ....
> 2011-02-23 11:04:34 ERROR: pid 1327: pool_init_pool_passwd: couldn't
> open /usr/local/etc/pool_passwd. reason: Permission denied
> 2011-02-23 11:04:34 LOG:   pid 1327: Backend status file
> /var/log/pgpool/pgpool_status does not exist
> .....
> 2011-02-23 11:04:34 LOG:   pid 1327: pgpool-II successfully started.
> version 3.1.0-alpha1 (umiyameboshi)
> .....
> 2011-02-23 11:04:34 DEBUG: pid 1352: I am 1352
> 2011-02-23 11:04:34 DEBUG: pid 1357: I am 1357
> 2011-02-23 11:04:34 ERROR: pid 1327:
> connect_unix_domain_socket_by_port: connect() failed: No such file or
> directory
> 2011-02-23 11:04:34 ERROR: pid 1327: make_persistent_db_connection:
> connection to (5432) failed
> 2011-02-23 11:04:34 ERROR: pid 1327: find_primary_node:
> make_persistent_connetcion failed
> 2011-02-23 11:04:34 LOG:   pid 1327: pgpool-II successfully started.
> version 3.1.0-alpha1 (umiyameboshi)
> ....
>
>
> I don't understand because if trying again :
> psql -p 5432 -l
>
> it works !
>
>
> And my pgpool.config :
>
>
> # pgpool-II configuration file sample
> # $Header:
> /cvsroot/pgpool/pgpool-web/contrib_docs/simple_sr_setting/pgpool.conf,v 1.1
> 2010/11/04 04:39:57 t-ishii Exp $
>
> # Host name or IP address to listen on: '*' for all, '' for no TCP/IP
> # connections
> listen_addresses = '*'
>
> # Port number for pgpool
> port = 9999
>
> # 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'
>
> # Unix domain socket path for the backend. Debian package defaults to
> /var/run/postgresql!
> backend_socket_dir = '/tmp'
>
> # pgpool communication manager timeout. 0 means no timeout, but
> strongly not recommended!
> pcp_timeout = 10
>
> # number of pre-forked child process
> num_init_children = 32
>
> # 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 = 0
>
> # 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
>
> # Logging directory
> logdir = '/var/log/pgpool'
>
> # pid file name
> pid_file_name = '/var/run/pgpool/pgpool.pid'
>
> # Replication mode
> replication_mode = false
>
> # Load balancing mode, i.e., all SELECTs are load balanced.
> # This is ignored if replication_mode is false.
> load_balance_mode = true
>
> # If there's a disagreement with the packet kind sent from backend,
> # then degenrate the node which is most likely "minority".  If false,
> # just force to exit this session.
> replication_stop_on_mismatch = false
>
> # If there's a disagreement with the number of affected tuples in
> # UPDATE/DELETE, then degenrate the node which is most likely
> # "minority".
> # If false, just abort the transaction to keep the consistency.
> failover_if_affected_tuples_mismatch = true
>
> # 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;DISCARD ALL'
>
> # white_function_list is a comma separated list of function names
> # those do not write to database. Any functions not listed here
> # are regarded to write to database and SELECTs including such
> # writer-functions will be executed on master(primary) in master/slave
> # mode, or executed on all DB nodes in replication mode.
> #
> # black_function_list is a comma separated list of function names
> # those write to database. Any functions not listed here
> # are regarded not to write to database and SELECTs including such
> # read-only-functions will be executed on any DB nodes.
> #
> # You cannot make full both white_function_list and
> # black_function_list at the same time. If you specify something in
> # one of them, you should make empty other.
> #
> # Pre 3.0 pgpool-II recognizes nextval and setval in hard coded
> # way. Following setting will do the same as the previous version.
> # white_function_list = ''
> # black_function_list = 'nextval,setval'
> white_function_list = ''
> #black_function_list = ''
> black_function_list = 'nextval,setval,foo'
>
> # If true print timestamp on each log line.
> print_timestamp = true
>
> # If true, operate in master/slave mode.
> master_slave_mode = true
>
> # Master/slave sub mode. either 'slony' or 'stream'. Default is 'slony'.
> # master_slave_sub_mode = 'stream'
> master_slave_sub_mode = 'stream'
>
> # If the standby server delays more than delay_threshold,
> # any query goes to the primary only. The unit is in bytes.
> # 0 disables the check. Default is 0.
> # Note that health_check_period required to be greater than 0
> # to enable the functionality.
> delay_threshold = 100
>
> # 'always' logs the standby delay whenever health check runs.
> # 'if_over_threshold' logs only if the delay exceeds delay_threshold.
> # 'none' disables the delay log.
> log_standby_delay = 'if_over_threshold'
> #log_standby_delay = 'always'
>
> # If true, cache connection pool.
> connection_cache = true
>
> # Health check timeout.  0 means no timeout.
> health_check_timeout = 10
>
> # Health check period.  0 means no health check.
> health_check_period = 10
>
> # Health check user
> health_check_user = 'www-data'
>
> # 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
> #                  %H = new master node host name
> #                  %P = old primary node id
> #                  %% = '%' character
> #
> failover_command = '/usr/local/etc/failover.sh %d "%h" %p %D %m %M
> "%H" %P'
>
> # 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 = '/bin/rm -f /tmp/trigger_file1'
>
> # If true, trigger fail over when writing to the backend communication
> # socket fails. This is the same behavior of pgpool-II 2.2.x or
> # earlier. If set to false, pgpool will report an error and disconnect
> # the session.
> fail_over_on_backend_error = false
>
> # If true, automatically lock table with INSERT statements to keep SERIAL
> # data consistency.  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 = 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 = true
>
> # If true, print all statements to the log. Similar to log_statement
> except
> # that prints DB node id and backend process id info.
> log_per_node_statement = true
>
> # If true, incoming connections will be printed to the log.
> 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
>
> # if non 0, run in parallel query mode
> parallel_mode = false
>
> # if non 0, use query cache
> enable_query_cache = false
>
> #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 = 'localhost'
> #backend_port0 = 5432
> #backend_weight0 = 1
> #backend_data_directory0 = '/data'
> #backend_hostname1 = 'localhost'
> #backend_port1 = 5433
> #backend_weight1 = 1
> #backend_data_directory1 = '/data1'
>
> # - 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 = false
>
> # md5 authentication file name. '' disables md5 authentication.
> # To enable md5 auth, enable_pool_hba to true.
> # Default is 'pool_passwd'.
> pool_passwd = 'pool_passwd'
> # - online recovery -
> # online recovery user
> recovery_user = 'postgres'
>
> # online recovery password
> recovery_password = 'pgpoolAdmin'
>
> # execute a command in first stage.
> recovery_1st_stage_command = 'basebackup.sh'
>
> # execute a command in second stage.
> recovery_2nd_stage_command = ''
>
> # maximum time in seconds to wait for remote start-up. 0 means no wait
> recovery_timeout = 60
>
> # 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
>
> # Specify table name to lock. This is used when rewriting lo_creat
> # command in replication mode. The table must exist and has writable
> # permission to public. If the table name is '', no rewriting occurs.
> lobj_lock_table = 'pgpool_lobj_lock'
>
> # If true, enable SSL support for both frontend and backend connections.
> # note that you must also set ssl_key and ssl_cert for SSL to work in
> # the frontend connections.
> ssl = false
> # path to the SSL private key file
> ssl_key = '/usr/local/etc/server.key'
> # path to the SSL public certificate file
> ssl_cert = '/usr/local/etc/server.crt'
>
> # Debug message verbosity level. 0: no message, 1 <= : more verbose
> debug_level = 0
>
> replication_timeout = 5000
> log_statement = false
> ssl_ca_cert = ''
> ssl_ca_cert_dir = ''
> backend_hostname0 = ''
> backend_port0 = 5432
> backend_weight0 = 1
> backend_data_directory0 = '/usr/local/pgsql/data'
> backend_hostname1 = ''
> backend_port1 = 5433
> backend_weight1 = 1
> backend_data_directory1 = '/usr/local/pgsql/standby'
>
>
>
> thx,
>
>
> On Wed, Feb 23, 2011 at 10:30 AM, Tatsuo Ishii <ishii at sraoss.co.jp
> <mailto:ishii at sraoss.co.jp>> wrote:
>
>     The error message says pgpool-II could not find valid socket for 5432.
>     Can you connect to PostgreSQL using psql on the host where pgpool-II
>     is installed?
>
>     psql -p 5432 -l
>
>     What is your platform pgpool-II is running on?
>     --
>     Tatsuo Ishii
>     SRA OSS, Inc. Japan
>     English: http://www.sraoss.co.jp/index_en.php
>     Japanese: http://www.sraoss.co.jp
>
>     > Hi,
>     >
>     > I'm trying to understand pgPool-II on my local server.
>     >
>     > But I encounter this bug now :
>     >
>     > 2011-02-23 09:52:03 LOG:   pid 1101: pgpool-II successfully
>     started. version
>     > 3.1.0-alpha1 (umiyameboshi)
>     > 2011-02-23 09:52:03 DEBUG: pid 1132: I am 1132
>     > 2011-02-23 09:52:03 ERROR: pid 1101:
>     connect_unix_domain_socket_by_port:
>     > connect() failed: No such file or directory
>     > 2011-02-23 09:52:03 ERROR: pid 1101: make_persistent_db_connection:
>     > connection to (5432) failed
>     >
>     >
>     > I don't know what is wrong ?
>     > Just before that, I've done :
>     > /usr/lib/postgresql/9.0/bin/pg_ctl -D /usr/local/pgsql/data -l
>     logpostgres
>     > start
>     > and on the log my database server works well.
>     >
>     > I didn't find anything on the database server log about a
>     connection from
>     > pgpool.
>     >
>     > I'm following this tutorial
>     >
>     http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html
>     > but I've disabled the ssl  ( ssl = false )
>     > and I've started manually pgpool to show the log.
>     >
>     > Do you I've an idea of what is wrong ?
>     >
>     >
>     > THx,
>
>
>
>
> -- 
> Michael Musset,
> Tel: 06 26 06 29 89
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://pgfoundry.org/pipermail/pgpool-general/attachments/20110223/2b0ae118/attachment-0001.html>


More information about the Pgpool-general mailing list