diff options
Diffstat (limited to 'sca-cpp/trunk/components/sqldb/pgsql-standby-conf')
-rwxr-xr-x | sca-cpp/trunk/components/sqldb/pgsql-standby-conf | 66 |
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 + |