#!/bin/zsh # # Reload database. This assumes that the database is intially stopped, # starts it with remote connections disabled, loads the dump, then # enables remote connections. PGBASE=$1 PGBIN=$PGBASE/bin PGDATA=$PGBASE/data PGDUMP=/data/drkp/rubis-pgdumps/rubis-pgdump-$2 STARTDB=`dirname $0`/start-db STOPDB=`dirname $0`/stop-db SHIFTDB=`dirname $0`/PHP/ShiftDatabase.php DATADIR=$PGDATA-rubis-$2 if [[ $3 = "force" ]] ; then MODE="reload" else MODE="reload" if [[ -d $DATADIR ]] ; then echo "$DATADIR exists; using it" MODE="snapshot" fi fi if [[ $MODE = "snapshot" ]] ; then echo "Stopping database" $STOPDB $1 sudo rm -rf $PGDATA sudo cp -ar $DATADIR $PGDATA else echo "Disabling remote connections" sudo sed -i -e "/18.26/s/trust/reject/g" `sudo readlink -en $PGDATA/pg_hba.conf` fi echo "Starting database" $STARTDB $1 if [[ $MODE = "reload" ]] ; then echo "Dropping database" sudo -u postgres $PGBIN/createuser -h localhost -SdR cecchet sudo -u postgres $PGBIN/dropdb -h localhost -U cecchet rubis echo "Restoring database from $PGDUMP" sudo -u postgres $PGBIN/createdb -h localhost -U cecchet rubis sudo -u postgres $PGBIN/psql -h localhost -U cecchet rubis < $PGDUMP # echo "Shifting database" # php $SHIFTDB echo "Vacuuming database" $PGBIN/vacuumdb -h localhost -U cecchet -azf echo "Stopping database" $STOPDB $1 echo "Saving snapshot" sudo chown postgres $PGBASE sudo -u postgres cp -ar $PGDATA $DATADIR echo "Starting database" $STARTDB $1 fi echo "Re-enabling remote connections" sudo sed -i -e "/18.26/s/reject/trust/g" `sudo readlink -en $PGDATA/pg_hba.conf` sudo -u postgres $PGBIN/pg_ctl -D $PGDATA reload echo "Done setting up DB" exit 0