pgpool with PostgreSQL 7.4 - Mailing list pgsql-general
From | Kevin MacClay |
---|---|
Subject | pgpool with PostgreSQL 7.4 |
Date | |
Msg-id | 20050414134615.59003.qmail@web61210.mail.yahoo.com Whole thread Raw |
Responses |
Re: pgpool with PostgreSQL 7.4
|
List | pgsql-general |
Hello,
I'm having trouble getting pgpool to work in master/slave mode. I'm planning on using something like Slony-I for replication, and use pgpool only to load balance the queries across the master and slave, as well as provide failover if the master goes down.
I configured the settings so replication_mode = false, load_balance_mode = true, and master_slave_mode = true. I also set secondary_backend_host_name and secondary_backend_port to refer to the slave. Here's what happens when I try to connect to the database to show the status:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The strange thing is that if I change the configuration so master_slave_mode = false, it seems that the failover works but load balancing does not. When master/slave is disabled, I'm able to show the status and run queries against the master. If I use "pgpool -s s switch" to perform a manual switchover, I am then able to run queries against the slave. But as soon as I try running pgpool with master_slave_mode = true, it stops working and when I try to connect I get the error above ("server closed the connection unexpectedly").
Am I doing something wrong? Below are my configuration settings when I receive the error. I'm using the latest stable build of pgpool (2.5.1). The master is PG 7.4.7, the slave is PG 7.4.
[root@vl-pe6650-004 etc]# more pgpool.conf
#
# pgpool configuration file sample
# $Header: /cvsroot/pgpool/pgpool/pgpool.conf.sample,v 1.1.1.1 2005/02/14 14:52:21 t-ishii Exp $
#
# pgpool configuration file sample
# $Header: /cvsroot/pgpool/pgpool/pgpool.conf.sample,v 1.1.1.1 2005/02/14 14:52:21 t-ishii Exp $
# host name or IP address to listen on: '*' for all, '' for no TCP/IP connections
listen_addresses = '*'
listen_addresses = '*'
# port number for pgpool
port = 9999
port = 9999
# Unix domain socket path. Debian package default to /var/run/postgresql!
socket_dir = '/tmp'
socket_dir = '/tmp'
# host name where PostgreSQL server is running on. '' means localhost using UNIX
# domain socket
backend_host_name = ''
# domain socket
backend_host_name = ''
# port number PostgreSQL server is running on.
backend_port = 5432
backend_port = 5432
# Unix domain socket path for the backend. Debian package default to /var/run/postgresql!
backend_socket_dir = '/tmp'
backend_socket_dir = '/tmp'
# host name where secondary PostgreSQL server is running on. '' means localhost using UNIX
# domain socket
secondary_backend_host_name = '192.168.0.153'
# domain socket
secondary_backend_host_name = '192.168.0.153'
# port number secondary PostgreSQL server is running on.
# 0 means no secondrary PostgreSQL
secondary_backend_port = 5432
# 0 means no secondrary PostgreSQL
secondary_backend_port = 5432
# number of pre-forked child process
num_init_children = 32
num_init_children = 32
# numer of connection pool allowed for a child process.
max_pool = 4
max_pool = 4
# if idle for this seconds, child exits. 0 means no timeout.
child_life_time = 300
child_life_time = 300
# if idle for this seconds, connection to PostgreSQL closes. 0 means
# no timeout
connection_life_time = 0
# no timeout
connection_life_time = 0
# logging directory
logdir = '/tmp'
logdir = '/tmp'
# replication mode
replication_mode = false
replication_mode = false
# set this to true if you want to avoid deadlock situation when
# replication enabled.
# there will be noticable performance degration, however.
# a work around is set this to false and insert /*STRICT*/ comment
# at the beginning of the SQL command.
replication_strict = true
# replication enabled.
# there will be noticable performance degration, however.
# a work around is set this to false and insert /*STRICT*/ comment
# at the beginning of the SQL command.
replication_strict = true
# when replication_strict is set to false, there will be a chance for
# deadlocks. set this to non 0 (in milli seconds) to detect this
# situation and resolve the deadlock aborting current session.
replication_timeout = 5000
# deadlocks. set this to non 0 (in milli seconds) to detect this
# situation and resolve the deadlock aborting current session.
replication_timeout = 5000
# load balancing mode. i.e. all SELECT except in a transaction block
# are load balanced. This is ignored if replication_mode is false.
load_balance_mode = true
# are load balanced. This is ignored if replication_mode is false.
load_balance_mode = true
# load balance weight for master and secondary. actual weight is
# calculated by weight_master:weight_secondary. For example both
#
# weight_master = 10 and weight_secondary = 5
# weight_master = 4 and weight_secondary = 2
#
# are regarded as master has double the weight comparing with secondary.
# master and secondary have same weight in the default.
weight_master = 0.5
weight_secondary = 0.5
# calculated by weight_master:weight_secondary. For example both
#
# weight_master = 10 and weight_secondary = 5
# weight_master = 4 and weight_secondary = 2
#
# are regarded as master has double the weight comparing with secondary.
# master and secondary have same weight in the default.
weight_master = 0.5
weight_secondary = 0.5
# if there's a data mismatch between master and secondary
# start degenration to stop replication mode
replication_stop_on_mismatch = false
# start degenration to stop replication mode
replication_stop_on_mismatch = false
# semicolon separated list of quries to be issued at the end of session
reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'
reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'
# if true print time stamp to each log line
print_timestamp = true
print_timestamp = true
# if true, operate in master/slave mode
master_slave_mode = true
master_slave_mode = true
# if true, cache connection pool
connection_cache = true
connection_cache = true
# health check timeout. 0 means no timeout;
health_check_timeout = 20
health_check_timeout = 20
# health check period. 0 means no health check
health_check_period = 0
health_check_period = 0
# health check user
health_check_user = 'nobody'
health_check_user = 'nobody'
Thanks for your help,
Kevin
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
pgsql-general by date: