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..fe50d07 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +pgpool-II-1.3.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.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..260e4de --- /dev/null +++ b/pgpool.conf.sample.patch @@ -0,0 +1,40 @@ +--- pgpool.conf.sample.old 2007-08-05 05:27:53.000000000 +0300 ++++ pgpool.conf.sample 2007-08-05 05:29:01.000000000 +0300 +@@ -1,6 +1,5 @@ + # + # pgpool-II configuration file sample +-# $Header: /home/fedora/jkeating/pkgs/rpms/postgresql-pgpool-II/FC-6/pgpool.conf.sample.patch,v 1.1 2007/08/16 09:23:06 devrim Exp $ + + # Host name or IP address to listen on: '*' for all, '' for no TCP/IP + # connections +@@ -12,16 +11,14 @@ + # 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. ++socket_dir = '/var/run' + + # Unix domain socket path for pgpool communication manager. +-# (Debian package defaults to /var/run/postgresql) +-pcp_socket_dir = '/tmp' ++pcp_socket_dir = '/var/run' + +-# 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 communication manager timeout. 0 means no timeout, but strongly not recommended! + pcp_timeout = 10 +@@ -44,7 +41,7 @@ + child_max_connections = 0 + + # Logging directory +-logdir = '/tmp' ++logdir = '/var/run' + + # Replication mode + replication_mode = false diff --git a/pgpool.init b/pgpool.init new file mode 100755 index 0000000..8c96220 --- /dev/null +++ b/pgpool.init @@ -0,0 +1,163 @@ +#!/bin/sh +# pgpool This is the init script for starting up pgpool-II +# +# chkconfig: - 64 36 +# 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 + +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=pgpool + +# Set defaults for configuration variables +PGPOOLENGINE=/usr/bin +PGPOOLDAEMON=$PGPOOLENGINE/pgpool +PGPOOLCONF=/etc/pgpool.conf +PGPOOLPID=/var/run/pgpool.pid +PGPOOLLOG=/var/log/pgpool.log + +test -x $PGPOOLDAEMON || exit 5 + +# Create the log file if it does not exist +if [ ! -r $PGPOOLLOG ] +then + touch $PGPOOLLOG +fi + +# Check whether the config file exists or not +if [ ! -r /etc/pgpool.conf ] +then + echo "$PGPOOLCONF not found" + RETVAL=1 + failure + exit +fi + +script_result=0 + +start(){ + PGPOOL_START=$"Starting ${NAME} service: " + + echo -n "$PGPOOL_START" + $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 "$PSQL_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 + RETVAL=$? + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${NAME} + fi; + echo + return $RETVAL +} + +switch() { + echo -n $"Sending switchover request to $NAME " + $PGPOOLDAEMON 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..ef8e2e1 --- /dev/null +++ b/pgpool.sysconfig @@ -0,0 +1,6 @@ +# 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" diff --git a/postgresql-pgpool-II.spec b/postgresql-pgpool-II.spec new file mode 100644 index 0000000..f5f9c61 --- /dev/null +++ b/postgresql-pgpool-II.spec @@ -0,0 +1,177 @@ +%define short_name pgpool-II + +Summary: Pgpool is a connection pooling/replication server for PostgreSQL +Name: postgresql-%{short_name} +Version: 1.3 +Release: 1%{?dist} +License: BSD +Group: Applications/Databases +URL: http://pgpool.projects.PostgreSQL.org/pgpool-II/en +Source0: http://pgfoundry.org/frs/download.php/1488/%{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} + +%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 + +make %{?_smp_flags} + +%install +rm -rf %{buildroot} +make %{?_smp_flags} DESTDIR=%{buildroot} install +install -d %{buildroot}%{_datadir}/%{name} +mv %{buildroot}/%{_sysconfdir}/*.conf.sample %{buildroot}%{_datadir}/%{name} +mv %{buildroot}%{_datadir}/%{short_name}/system_db.sql %{buildroot}%{_datadir}/%{name} +mv %{buildroot}%{_datadir}/%{short_name}/pgpool.pam %{buildroot}%{_datadir}/%{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 + +%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_stop_pgpool +%{_bindir}/pcp_systemdb_info +%{_bindir}/pg_md5 +%{_mandir}/man8/pgpool* +%{_datadir}/%{name}/system_db.sql +%{_libdir}/libpcp.so.* +%attr(764,root,apache) %{_datadir}/%{name}/*.conf.sample +%{_datadir}/%{name}/pgpool.pam +%{_initrddir}/pgpool +%config(noreplace) %{_sysconfdir}/sysconfig/pgpool + +%files devel +%defattr(-,root,root,-) +%{_includedir}/pcp.h +%{_includedir}/pool_type.h +%{_libdir}/libpcp.so + +%changelog +* 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..b2c5487 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +1276c4b98a9de6f85f3179380a370144 pgpool-II-1.3.tar.gz