summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/components/sqldb/pgsql-standby-conf
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/trunk/components/sqldb/pgsql-standby-conf')
-rwxr-xr-xsca-cpp/trunk/components/sqldb/pgsql-standby-conf66
1 files changed, 54 insertions, 12 deletions
diff --git a/sca-cpp/trunk/components/sqldb/pgsql-standby-conf b/sca-cpp/trunk/components/sqldb/pgsql-standby-conf
index bc0d4e9981..77d1dfa8e2 100755
--- a/sca-cpp/trunk/components/sqldb/pgsql-standby-conf
+++ b/sca-cpp/trunk/components/sqldb/pgsql-standby-conf
@@ -34,6 +34,7 @@ else
fi
port=`$here/../../modules/http/httpd-addr port $addr`
fi
+bport=`expr $port + 1000`
# Master server address
if [ "$3" = "" ]; then
@@ -47,6 +48,12 @@ else
fi
pgsql_prefix=`cat $here/pgsql.prefix`
+pgbouncer_prefix=`cat $here/pgbouncer.prefix`
+
+mkdir -p $root/sqldb/data
+chmod 700 $root/sqldb/data
+mkdir -p $root/sqldb/archive
+mkdir -p $root/sqldb/backup
if [ -f "$root/sqldb/log.conf" ]; then
pgsql_log=`cat $root/sqldb/log.conf`
@@ -57,14 +64,15 @@ fi
mkdir -p $root/sqldb
echo $pgsql_log >$root/sqldb/logger
-mkdir -p $root/sqldb/data
-chmod 700 $root/sqldb/data
-mkdir -p $root/sqldb/archive
-
# Initialize from a backup of the master
if [ ! -f $root/sqldb/data/postgresql.conf ]; then
- (curl -L -# http://$mhost:$mhttpport/pgsql-backup | tar -C $root/sqldb -xz) 2>&1 | grep -v "100.0%" | sh $root/sqldb/logger
- rm -rf $root/sqldb/data/postmaster.pid $root/sqldb/data/pg_xlog
+ uname=`uname -s`
+ if [ $uname = "Darwin" ]; then
+ tar=gnutar
+ else
+ tar=tar
+ fi
+ (curl -L -# http://$mhost:$mhttpport/pgsql-restore | $tar -C $root/sqldb -xz) 2>&1 | grep -v "100.0%" | sh $root/sqldb/logger
mkdir -p $root/sqldb/data/pg_xlog/archive_status
chmod 700 $root/sqldb/data/pg_xlog/archive_status
fi
@@ -92,7 +100,7 @@ port = $port
# Setup archival
archive_mode = on
-archive_command = 'cp %p $root/sqldb/archive/%f'
+archive_command = '$here/pgsql-archive $root localhost $bport %p %f'
# Setup hot standby with streaming replication
wal_level = hot_standby
@@ -119,13 +127,13 @@ restore_command = 'curl -L -# http://$mhost:$mhttpport/pgsql-archive/%f -o "%p"
EOF
-# Generate database backup script
+# Generate database restore script
mkdir -p $root/sqldb/scripts
-cat >$root/sqldb/scripts/backup <<EOF
+cat >$root/sqldb/scripts/restore <<EOF
#!/bin/sh
-$here/pgsql-backup $root localhost $port
+$here/pgsql-restore $root
EOF
-chmod 700 $root/sqldb/scripts/backup
+chmod 700 $root/sqldb/scripts/restore
# Configure HTTPD to serve backup and archive files
if [ -f "$root/conf/httpd.conf" ]; then
@@ -133,10 +141,44 @@ if [ -f "$root/conf/httpd.conf" ]; then
# Generated by: pgsql-standby-conf $*
# Serve PostgreSQL backup and WAL archive files
-ScriptAlias /pgsql-backup "$root/sqldb/scripts/backup"
+ScriptAlias /pgsql-restore "$root/sqldb/scripts/restore"
Alias /pgsql-archive "$root/sqldb/archive"
EOF
fi
+# Configure PgBouncer
+mkdir -p $root/logs
+id=`id -un`
+cat >$root/sqldb/data/pgbouncer.conf <<EOF
+
+[databases]
+db = host=localhost dbname=db
+
+[pgbouncer]
+pool_mode = session
+listen_port = $bport
+listen_addr = $ip
+auth_type = trust
+auth_file=$root/sqldb/data/pgbouncer-auth.conf
+logfile = $root/logs/pgbouncer
+pidfile = $root/logs/pgbouncer.pid
+max_client_conn = 1000
+pool_mode = transaction
+server_reset_query =
+default_pool_size = 500
+min_pool_size = 5
+reserve_pool_size = 50
+log_connections = 0
+log_disconnections = 0
+stats_period = 3600
+admin_users = $id
+
+EOF
+
+cat >$root/sqldb/data/pgbouncer-auth.conf <<EOF
+"$id" "password"
+
+EOF
+