[Pgpool-general] [pgPool]

Tatsuo Ishii ishii at sraoss.co.jp
Wed Feb 23 13:55:16 UTC 2011


> Ubuntu 10.04 server,
> 
> Sorry,

If my memory serves, Ubuntu has weired policy about socket directory
as Debian:

> # Unix domain socket path for the backend. Debian package defaults to
> /var/run/postgresql!
> backend_socket_dir = '/tmp'

Changing backend_socket_dir to /var/run/postgresql might help.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

> On Wed, Feb 23, 2011 at 2:04 PM, Tatsuo Ishii <ishii at sraoss.co.jp> wrote:
> 
>> >> What is your platform pgpool-II is running on?
>>
>> So what is your platform?
>> --
>> Tatsuo Ishii
>> SRA OSS, Inc. Japan
>> English: http://www.sraoss.co.jp/index_en.php
>> Japanese: http://www.sraoss.co.jp
>>
>> > 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>
>> 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
>>
> 
> 
> 
> -- 
> Michael Musset,
> Tel: 06 26 06 29 89


More information about the Pgpool-general mailing list