|
1 | 1 | #!/usr/bin/env sh
|
2 | 2 |
|
3 |
| -for dbName in ${DB_NAMES}; do |
4 |
| - logger -p user.info "restoring ${dbName}..." |
| 3 | +# Does the database exist? |
| 4 | +logger -p user.info "checking for DB ${DB_NAME}..." |
| 5 | +result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --list | grep ${DB_NAME}) |
| 6 | +if [ -z "${result}" ]; then |
| 7 | + message="Database "${DB_NAME}" on host "${DB_HOST}" does not exist." |
| 8 | + logger -p 1 -t application.crit "${message}" |
| 9 | + exit 1 |
| 10 | +fi |
5 | 11 |
|
6 |
| - runny s3cmd get -f ${S3_BUCKET}/${dbName}.sql.gz /tmp/${dbName}.sql.gz |
7 |
| - runny gunzip -f /tmp/${dbName}.sql.gz |
| 12 | +# Ensure the database user exists. |
| 13 | +logger -p user.info "checking for DB user ${DB_USER}..." |
| 14 | +result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --command='\du' | grep ${DB_USER}) |
| 15 | +if [ -z "${result}" ]; then |
| 16 | + result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --command="create role ${DB_USER} with login password '${DB_USERPASSWORD}' inherit;") |
| 17 | + if [ "${result}" != "CREATE ROLE" ]; then |
| 18 | + message="Create role command failed: ${result}" |
| 19 | + logger -p 1 -t application.crit "${message}" |
| 20 | + exit 1 |
| 21 | + fi |
| 22 | +fi |
8 | 23 |
|
9 |
| - start=$(date +%s) |
10 |
| - runny psql --host=${DB_HOST} --username=${DB_USER} ${DB_OPTIONS} < /tmp/${dbName}.sql |
11 |
| - end=$(date +%s) |
| 24 | +logger -p user.info "changing DB ownership to ${DB_USER}..." |
| 25 | +result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --command="alter database ${DB_NAME} owner to ${DB_USER};") |
| 26 | +if [ "${result}" != "ALTER DATABASE" ]; then |
| 27 | + message="Alter database command failed: ${result}" |
| 28 | + logger -p 1 -t application.crit "${message}" |
| 29 | + exit 1 |
| 30 | +fi |
12 | 31 |
|
13 |
| - logger -p user.info "${dbName} restored in $(expr ${end} - ${start}) seconds." |
14 |
| -done |
| 32 | +logger -p user.info "restoring ${DB_NAME}..." |
| 33 | + |
| 34 | +runny s3cmd get -f ${S3_BUCKET}/${DB_NAME}.sql.gz /tmp/${DB_NAME}.sql.gz |
| 35 | +runny gunzip -f /tmp/${DB_NAME}.sql.gz |
| 36 | + |
| 37 | +start=$(date +%s) |
| 38 | +runny psql --host=${DB_HOST} --username=${DB_USER} --dbname=${DB_NAME} ${DB_OPTIONS} < /tmp/${DB_NAME}.sql |
| 39 | +end=$(date +%s) |
| 40 | + |
| 41 | +logger -p user.info "${DB_NAME} restored in $(expr ${end} - ${start}) seconds." |
0 commit comments