diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index e69de29..0000000 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ae6c1e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +pgpool-II-2.3.1.tar.gz diff --git a/Makefile b/Makefile deleted file mode 100644 index 8d78723..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: postgresql-pgpool-II -# $Id$ -NAME := postgresql-pgpool-II -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/pgpool-II-1.1.1.tar.gz b/pgpool-II-1.1.1.tar.gz new file mode 100644 index 0000000..80d8d3b Binary files /dev/null and b/pgpool-II-1.1.1.tar.gz differ diff --git a/pgpool.conf.sample b/pgpool.conf.sample new file mode 100644 index 0000000..a460d5d --- /dev/null +++ b/pgpool.conf.sample @@ -0,0 +1,148 @@ +# +# pgpool-II configuration file sample + +# Host name or IP address to listen on: '*' for all, '' for no TCP/IP +# connections +listen_addresses = 'localhost' + +# Port number for pgpool +port = 9999 + +# Port number for pgpool communication manager +pcp_port = 9898 + +# Unix domain socket path. +socket_dir = '/var/run' + +# Unix domain socket path for pgpool communication manager. +pcp_socket_dir = '/var/run' + +# Unix domain socket path for the backend. +backend_socket_dir = '/var/run' + +# 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 = 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 + +# Logging directory +logdir = '/var/run' + +# Replication mode +replication_mode = false + +# Set this to true if you want to avoid deadlock situations when +# replication is enabled. There will, however, be a noticable performance +# degradation. A workaround is to set this to false and insert a /*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 nonzero (in milliseconds) to detect this +# situation and resolve the deadlock by aborting current session. +replication_timeout = 5000 + +# Load balancing mode, i.e., all SELECTs except in a transaction block +# 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 sended 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' + +# 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 period. 0 means no health check. +health_check_period = 0 + +# Health check user +health_check_user = 'nobody' + +# 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 = false + +# 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 = false + +# If true, incoming connections will be printed to the log. +log_connections = false + +# 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 = 'host1' +#backend_port0 = 5432 +#backend_weight0 = 1 +#backend_hostname1 = 'host2' +#backend_port1 = 5433 +#backend_weight1 = 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 = false diff --git a/pgpool.conf.sample.patch b/pgpool.conf.sample.patch new file mode 100644 index 0000000..81d10ca --- /dev/null +++ b/pgpool.conf.sample.patch @@ -0,0 +1,46 @@ +--- pgpool.conf.sample.old 2009-03-22 22:18:52.000000000 +0200 ++++ pgpool.conf.sample 2009-03-22 22:46:20.000000000 +0200 +@@ -12,16 +12,14 @@ + # Port number for pgpool communication manager + pcp_port = 9898 + +-# Unix domain socket path. (The Debian package defaults to +-# /var/run/postgresql.) ++# Unix domain socket path. + 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' ++# Unix domain socket path for the backend. ++backend_socket_dir = '/var/run/pgpool' + + # pgpool communication manager timeout. 0 means no timeout, but strongly not recommended! + pcp_timeout = 10 +@@ -54,7 +52,7 @@ + authentication_timeout = 60 + + # Logging directory +-logdir = '/tmp' ++logdir = '/var/log/pgpool' + + # pid file name + pid_file_name = '/var/run/pgpool/pgpool.pid' +@@ -166,10 +164,10 @@ + + # backend_hostname, backend_port, backend_weight + # here are examples +-#backend_hostname0 = 'host1' +-#backend_port0 = 5432 +-#backend_weight0 = 1 +-#backend_data_directory0 = '/data' ++backend_hostname0 = 'localhost' ++backend_port0 = 5432 ++backend_weight0 = 1 ++backend_data_directory0 = '/var/lib/pgsql/data' + #backend_hostname1 = 'host2' + #backend_port1 = 5433 + #backend_weight1 = 1 diff --git a/pgpool.init b/pgpool.init new file mode 100755 index 0000000..e0a4119 --- /dev/null +++ b/pgpool.init @@ -0,0 +1,204 @@ +#!/bin/sh +# pgpool This is the init script for starting up pgpool-II +# +# chkconfig: - 235 74 33 +# description: Starts and stops the pgpool daemon +# processname: pgpool +# pidfile: /var/run/pgpool.pid +# +# v1.0.0 Devrim GUNDUZ +# - Initial version of Red Hat / Fedora init script +# +# v2.2 Devrim GUNDUZ +# - New and improved version which has some fixes. +# +# v2.2.5 Devrim GUNDUZ +# - Fix logging. +# +# v2.3 Devrim GUNDUZ +# - Adjust order of startup and kill, per RH bugzilla #545739. + +if [ -r /etc/sysconfig/pgpool ]; then + . /etc/sysconfig/pgpool +fi + +# Source function library. +INITD=/etc/rc.d/init.d +. $INITD/functions + +# Get function listing for cross-distribution logic. +TYPESET=`typeset -f|grep "declare"` + +# Get config. +. /etc/sysconfig/network + +# Check that networking is up. +# We need it for pgpool +[ "${NETWORKING}" = "no" ] && exit 0 + +# Find the name of the script +NAME=`basename $0` +if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ] +then + NAME=${NAME:3} +fi + +# For SELinux we need to use 'runuser' not 'su' +if [ -x /sbin/runuser ] +then + SU=runuser +else + SU=su +fi + +# Set defaults for configuration variables +PGPOOLENGINE=/usr/bin +PGPOOLDAEMON=$PGPOOLENGINE/pgpool +PGPOOLCONF=/etc/pgpool-II/pgpool.conf +PGPOOLPIDDIR=/var/run/pgpool +PGPOOLLOG=/var/log/pgpool.log + +test -x $PGPOOLDAEMON || exit 5 + +# Check whether the config file exists or not +if [ ! -r $PGPOOLCONF ] +then + echo "$PGPOOLCONF not found" + RETVAL=1 + failure + exit +fi + +# Create the log file if it does not exist +if [ ! -x $PGPOOLLOG ] +then + touch $PGPOOLLOG + chown postgres: $PGPOOLLOG +fi + +if [ ! -d $PGPOOLPIDDIR ] +then + mkdir $PGPOOLPIDDIR + chown postgres: $PGPOOLPIDDIR +fi + +script_result=0 + +start(){ + pid=`pidof -s "$PGPOOLDAEMON"` + if [ $pid ] + then + echo "pgpool is already running with pid $pid" + failure "$PGPOQL_START" + echo + script_result=1 + exit 1 + fi + + PGPOOL_START=$"Starting ${NAME} service: " + + echo -n "$PGPOOL_START" + + $SU -l postgres -c "$PGPOOLDAEMON -f $PGPOOLCONF $OPTS & " >> "$PGPOOLLOG" 2>&1 < /dev/null + sleep 2 + + pid=`pidof -s "$PGPOOLDAEMON"` + if [ $pid ] + then + success "$PGPOOL_START" + touch /var/lock/subsys/${NAME} + echo + else + failure "$PGPOQL_START" + echo + script_result=1 + fi +} + +stop(){ + echo -n $"Stopping ${NAME} service: " + if [ $UID -ne 0 ]; then + RETVAL=1 + failure + else + killproc /usr/bin/pgpool +# $PGPOOLDAEMON stop & >> "$PGPOOLLOG" 2>&1 < /dev/null + RETVAL=$? + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${NAME} + fi; + echo + return $RETVAL +} + +switch() { + echo -n $"Sending switchover request to $NAME " + $PGPOOLDAEMON -f $PGPOOLCONF switch >> "$PGPOOLLOG" 2>&1 < /dev/null + RETVAL=$? + echo + if [ $RETVAL -eq 0 ] + then + echo_success + else + echo_failure + fi + echo +} + +restart(){ + stop + start +} + +reload(){ + echo -n $"Reloading ${NAME}: " + + if [ -n "`pidfileofproc $PGPOOLDAEMON`" ] ; then + killproc $PGPOOLDAEMON -HUP + else + failure $"Reloading ${NAME}" + fi + RETVAL=$? + echo +} + +condrestart(){ + [ -e /var/lock/subsys/${NAME} ] && restart +} + +condstop(){ + [ -e /var/lock/subsys/${NAME} ] && stop +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + switch) + switch + ;; + status) + status pgpool + script_result=$? + ;; + restart) + restart + ;; + reload|force-reload) + reload + ;; + condrestart) + condrestart + ;; + condstop) + condstop + ;; + *) + echo $"Usage: $0 {start|stop|switch|status|restart|condrestart|condstop|reload|force-reload}" + exit 1 +esac + +exit $script_result diff --git a/pgpool.sysconfig b/pgpool.sysconfig new file mode 100644 index 0000000..221869e --- /dev/null +++ b/pgpool.sysconfig @@ -0,0 +1,7 @@ +# Options for pgpool + +# -n: don't run in daemon mode. does not detatch control tty +# -d: debug mode. lots of debug information will be printed + +#OPTS=" -d -n" +OPTS=" -n" diff --git a/postgresql-pgpool-II.spec b/postgresql-pgpool-II.spec new file mode 100644 index 0000000..fa86060 --- /dev/null +++ b/postgresql-pgpool-II.spec @@ -0,0 +1,235 @@ +%define short_name pgpool-II + +Summary: Pgpool is a connection pooling/replication server for PostgreSQL +Name: postgresql-%{short_name} +Version: 2.3.1 +Release: 1%{?dist} +License: BSD +Group: Applications/Databases +URL: http://pgpool.projects.PostgreSQL.org +Source0: http://pgfoundry.org/frs/download.php/2506/%{short_name}-%{version}.tar.gz +Source1: pgpool.init +Source2: pgpool.sysconfig +Patch1: pgpool.conf.sample.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: postgresql-devel pam-devel + +Obsoletes: postgresql-pgpool + +%description +pgpool-II is a inherited project of pgpool (to classify from +pgpool-II, it is sometimes called as pgpool-I). For those of +you not familiar with pgpool-I, it is a multi-functional +middle ware for PostgreSQL that features connection pooling, +replication and load balancing functions. pgpool-I allows a +user to connect at most two PostgreSQL servers for higher +availability or for higher search performance compared to a +single PostgreSQL server. + +pgpool-II, on the other hand, allows multiple PostgreSQL +servers (DB nodes) to be connected, which enables queries +to be executed simultaneously on all servers. In other words, +it enables "parallel query" processing. Also, pgpool-II can +be started as pgpool-I by changing configuration parameters. +pgpool-II that is executed in pgpool-I mode enables multiple +DB nodes to be connected, which was not possible in pgpool-I. + +%package devel +Summary: The development files for pgpool-II +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Development headers and libraries for pgpool-II. + +%prep +%setup -q -n %{short_name}-%{version} +%patch1 -p0 + +%build +%configure --with-pgsql-includedir=%{_includedir}/pgsql --with-pgsql-lib=%{_libdir}/pgsql --disable-static --with-pam --disable-rpath --sysconfdir=%{_sysconfdir}/%{short_name}/ + +make %{?_smp_flags} + +%install +rm -rf %{buildroot} +make %{?_smp_flags} DESTDIR=%{buildroot} install +install -d %{buildroot}%{_datadir}/%{short_name} +install -d %{buildroot}%{_sysconfdir}/%{short_name} +mv %{buildroot}/%{_sysconfdir}/%{short_name}/pcp.conf.sample %{buildroot}%{_sysconfdir}/%{short_name}/pcp.conf +mv %{buildroot}/%{_sysconfdir}/%{short_name}/pgpool.conf.sample %{buildroot}%{_sysconfdir}/%{short_name}/pgpool.conf +mv %{buildroot}/%{_sysconfdir}/%{short_name}/pool_hba.conf.sample %{buildroot}%{_sysconfdir}/%{short_name}/pool_hba.conf +mv %{buildroot}/%{_sysconfdir}/%{short_name}/pgpool.conf.sample-master-slave %{buildroot}%{_datadir}/%{short_name}/ +mv %{buildroot}/%{_sysconfdir}/%{short_name}/pgpool.conf.sample-replication %{buildroot}%{_datadir}/%{short_name}/ + +install -d %{buildroot}%{_initrddir} +install -m 755 %{SOURCE1} %{buildroot}%{_initrddir}/pgpool +install -d %{buildroot}%{_sysconfdir}/sysconfig +install -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/pgpool + +# nuke libtool archive and static lib +rm -f %{buildroot}%{_libdir}/libpcp.{a,la} + +%clean +rm -rf %{buildroot} + +%post +/sbin/ldconfig +chkconfig --add pgpool + +%preun +if [ $1 = 0 ] ; then + /sbin/service pgpool condstop >/dev/null 2>&1 + chkconfig --del pgpool +fi + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc README README.euc_jp TODO COPYING INSTALL AUTHORS ChangeLog NEWS doc/pgpool-en.html doc/pgpool-ja.html doc/pgpool.css doc/tutorial-en.html doc/tutorial-ja.html +%{_bindir}/pgpool +%{_bindir}/pcp_attach_node +%{_bindir}/pcp_detach_node +%{_bindir}/pcp_node_count +%{_bindir}/pcp_node_info +%{_bindir}/pcp_proc_count +%{_bindir}/pcp_proc_info +%{_bindir}/pcp_recovery_node +%{_bindir}/pcp_stop_pgpool +%{_bindir}/pcp_systemdb_info +%{_bindir}/pg_md5 +%{_mandir}/man8/pgpool* +%dir %{_datadir}/%{short_name} +%{_datadir}/%{short_name}/system_db.sql +%{_datadir}/%{short_name}/pgpool.conf.sample-master-slave +%{_datadir}/%{short_name}/pgpool.conf.sample-replication +%{_libdir}/libpcp.so.* +%{_datadir}/%{short_name}/pgpool.pam +%{_initrddir}/pgpool +%attr(764,root,root) %config(noreplace) %{_sysconfdir}/%{short_name}/*.conf +%config(noreplace) %{_sysconfdir}/sysconfig/pgpool + +%files devel +%defattr(-,root,root,-) +%{_includedir}/pcp.h +%{_includedir}/pool_type.h +%{_libdir}/libpcp.so + +%changelog +* Fri Dec 25 2009 Devrim GUNDUZ - 2.3.1-1 +- Update to 2.3.1 +- Adjust order of startup and kill, per RH bugzilla #545739. + +* Tue Dec 1 2009 Devrim GUNDUZ - 2.2.6-1 +- Update to 2.2.6 + +* Sun Nov 01 2009 Devrim GUNDUZ - 2.2.5-2 +- Remove init script from all runlevels before uninstall. Per RH Bugzilla + #532177 + +* Sun Oct 4 2009 Devrim Gunduz 2.2.5-1 +- Update to 2.2.5, for various fixes described at + http://lists.pgfoundry.org/pipermail/pgpool-general/2009-October/002188.html +- Re-apply a fix for #442372 + +* Thu May 7 2009 Devrim Gunduz 2.2.2-1 +- Update to 2.2.2 + +* Mon Mar 23 2009 Devrim Gunduz 2.2-1.1 +- Fix pid file path in init script. +- Fix spec file -- we don't use short_name macro in pgcore spec file. +- Create pgpool pid file directory. +- Fix stop/start routines, also improve init script a bit. +- Install conf files to a new directory (/etc/pgpool-II), and get rid + of sample conf files. + +* Sun Mar 1 2009 Devrim Gunduz 2.2-1 +- Update to 2.2 +- Fix URL + +* Tue Aug 12 2008 Devrim Gunduz 2.1-1 +- Update to 2.1 Gold +- Set group of sample config files to root, not apache. Fixes RH #442372. +- Fix Requires: issue, per #442021 (Alex Lancaster) +- Update patch #1 + +* Sat Jan 19 2008 Devrim Gunduz 2.0.1-2 +- Fix Requires of -devel package, per bz#429436 + +* Sun Jan 13 2008 Devrim Gunduz 2.0.1-1 +- Update to 2.0.1 +- Add a temp patch that will disappear in 2.0.2 + +* Tue Oct 23 2007 Devrim Gunduz 1.3-1 +- Update to 1.3 + +* Fri Oct 5 2007 Devrim Gunduz 1.2.1-1 +- Update to 1.2.1 + +* Wed Aug 29 2007 Devrim Gunduz 1.2-5 +- Chmod sysconfig/pgpool to 644, not 755. Per BZ review. +- Run chkconfig --add pgpool during %%post. + +* Thu Aug 16 2007 Devrim Gunduz 1.2-4 +- Fixed the directory name where sample conf files and sql files + are installed. + +* Sun Aug 5 2007 Devrim Gunduz 1.2-3 +- Added a patch for sample conf file to use Fedora defaults + +* Sun Aug 5 2007 Devrim Gunduz 1.2-2 +- Added an init script for pgpool +- Added /etc/sysconfig/pgpool + +* Wed Aug 1 2007 Devrim Gunduz 1.2-1 +- Update to 1.2 + +* Fri Jun 15 2007 Devrim Gunduz 1.1.1-1 +- Update to 1.1.1 + +* Sat Jun 2 2007 Devrim Gunduz 1.1-1 +- Update to 1.1 +- added --disable-rpath configure parameter. +- Chowned sample conf files, so that they can work with pgpoolAdmin. + +* Thu Apr 22 2007 Devrim Gunduz 1.0.2-4 +- Added postgresql-devel as BR, per bugzilla review. +- Added --disable-static flan, per bugzilla review. +- Removed superfluous manual file installs, per bugzilla review. + +* Thu Apr 22 2007 Devrim Gunduz 1.0.2-3 +- Rebuilt for the correct tarball +- Fixed man8 file ownership, per bugzilla review #229321 + +* Tue Feb 20 2007 Jarod Wilson 1.0.2-2 +- Create proper devel package, drop -libs package +- Nuke rpath +- Don't install libtool archive and static lib +- Clean up %%configure line +- Use proper %%_smp_mflags +- Install config files properly, without .sample on the end +- Preserve timestamps on header files + +* Tue Feb 20 2007 Devrim Gunduz 1.0.2-1 +- Update to 1.0.2-1 + +* Mon Oct 02 2006 Devrim Gunduz 1.0.1-5 +- Rebuilt + +* Mon Oct 02 2006 Devrim Gunduz 1.0.1-4 +- Added -libs and RPM +- Fix .so link problem +- Cosmetic changes to spec file + +* Thu Sep 27 2006 - Devrim GUNDUZ 1.0.1-3 +- Fix spec, per Yoshiyuki Asaba + +* Thu Sep 26 2006 - Devrim GUNDUZ 1.0.1-2 +- Fixed rpmlint errors +- Fixed download url +- Added ldconfig for .so files + +* Thu Sep 21 2006 - David Fetter 1.0.1-1 +- Initial build pgpool-II 1.0.1 for PgPool Global Development Group + diff --git a/sources b/sources index e69de29..59dbedc 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +032fc94eaa71ed99276234b7a110cdf5 pgpool-II-2.3.1.tar.gz