Skip to content

Instantly share code, notes, and snippets.

@schadr
Last active December 10, 2015 14:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save schadr/4449353 to your computer and use it in GitHub Desktop.
Save schadr/4449353 to your computer and use it in GitHub Desktop.
This is a template for using a postgresql database on a WESTGRID cluster
#!/bin/bash
#PBS -S /bin/bash
##PBS -l procs=1
#PBS -l nodes=1:ppn=1
#PBS -l walltime=48:00:00
#PBS -m bae
#PBS -M your@email.com
#PBS -l mem=6gb
#PBS -l file=5gb
# you or a wrapper script should fill in the details
I=XXXXXX
DB_USER=xxx
DB_PASSWD=zzz
DB_NAME=yyy # db created
DUMP_DEST=/dir/to/dumps
PSQL_BIN=/dir/to/psql/bin
LOCAL_DB_DIR=$TMPDIR/dir
##########
#
# database set-up
#
##########
# init db
mkdir -p $LOCAL_DB_DIR
$PSQL_BIN/initdb --encoding=UTF8 --locale=en_US.UTF8 -D $LOCAL_DB_DIR
# start db
# and trying to find a usable port
DB_PORT=5431
while [ `netstat -an | grep tcp | awk '{if ($6 == "LISTEN") print $4}' | awk -F: '{print $2}' | grep $DB_PORT | wc -l` -lt 1 ]
do
DB_PORT=$(( $DB_PORT + 1 ))
done
$PSQL_BIN/postgres -D $LOCAL_DB_DIR --checkpoint_completion_target=0.9 --checkpoint_segments=256 --checkpoint_timeout=300 --autovacuum=TRUE --fsync=FALSE -p $DB_PORT&
# wait until postgres is started
while [ `psql -p $DB_PORT -l | wc -c` -lt 1 ]
do
sleep 1
done
$PSQL_BIN/createuser -p $DB_PORT -s -d -r -l $DB_USER
$PSQL_BIN/psql -p $DB_PORT -c "ALTER USER $DB_USER WITH PASSWORD '$DB_PASSWD'" postgres
$PSQL_BIN/createdb -p $DB_PORT $DB_NAME
############
#
# you should do your stuff here
#
# $DB_PORT is the port the database runs on
#
############
############
############
#
# After run clean up
#
############
# dump db
$PSQL_BIN/pg_dump -p $DB_PORT --no-owner --file=$DB_NAME.dump $DB_NAME
# stop db
$PSQL_BIN/pg_ctl -D $LOCAL_DB_DIR stop
# copy db to home
mv -f $DB_NAME.dump $DUMP_DEST
# cleanup
rm -rf $TMPDIR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment