|
| 1 | +#!/bin/bash |
| 2 | +set -e |
| 3 | + |
| 4 | +echo "Prepare configuration for script" |
| 5 | +TIMESTAMP=$(date +%F_%R) |
| 6 | +START_TIMESTAMP=$(date +%s) |
| 7 | +BACKUP_FILE=${DB_NAME}-${TIMESTAMP}.sql.gz |
| 8 | +BACKUP_FILE_LATEST=${DB_NAME}-latest.sql.gz |
| 9 | +DB_HOST=${DB_HOST:-localhost} |
| 10 | +DB_PASSWORD=$(cat ${DB_PASSWORD_FILE}) |
| 11 | +DB_USER=$(cat ${DB_USERNAME_FILE}) |
| 12 | +PROM_NAMESPACE=${PROM_NAMESPACE:-dboperator} |
| 13 | + |
| 14 | +# create login credential file |
| 15 | +(umask 377 && echo *:5432:*:${DB_USER}:${DB_PASSWORD} >> ~/.pgpass) |
| 16 | + |
| 17 | +echo "Start create backup" |
| 18 | +pg_dump -F c -Z 9 -h ${DB_HOST} -p 5432 -U ${DB_USER} ${DB_NAME} -f ${BACKUP_FILE} |
| 19 | +BACKUP_SIZE=$(du ${BACKUP_FILE} | awk '{print $1}') |
| 20 | +echo "End backup" |
| 21 | + |
| 22 | +## copy to destination |
| 23 | +echo "Copy to gcs" |
| 24 | +gsutil cp ${BACKUP_FILE} gs://${GCS_BUCKET}/${DB_NAME}/${BACKUP_FILE} && gsutil cp ${BACKUP_FILE} gs://${GCS_BUCKET}/${DB_NAME}/${BACKUP_FILE_LATEST} |
| 25 | + |
| 26 | +END_TIMESTAMP=$(date +%s) |
| 27 | +BACKUP_DURATION=$((END_TIMESTAMP - START_TIMESTAMP)) |
| 28 | +if [[ ! -z "$PROMETHEUS_PUSH_GATEWAY" ]]; |
| 29 | +then |
| 30 | +echo "sending monitoring metrics to ${PROMETHEUS_PUSH_GATEWAY}" |
| 31 | +cat <<EOF | curl -s --data-binary @- http://${PROMETHEUS_PUSH_GATEWAY}/metrics/job/pgdump-gcs/source_type/postgresql/source_name/${DB_NAME} |
| 32 | + # TYPE ${PROM_NAMESPACE}_backup_timestamp counter |
| 33 | + # HELP ${PROM_NAMESPACE}_backup_timestamp Timestamp of last backup run |
| 34 | + ${PROM_NAMESPACE}_backup_timestamp $END_TIMESTAMP |
| 35 | + # TYPE ${PROM_NAMESPACE}_backup_duration gauge |
| 36 | + # HELP ${PROM_NAMESPACE}_backup_duration Time the backup run take until finished |
| 37 | + ${PROM_NAMESPACE}_backup_duration $BACKUP_DURATION |
| 38 | + # TYPE ${PROM_NAMESPACE}_backup_size gauge |
| 39 | + # HELP ${PROM_NAMESPACE}_backup_size Backup Size in bytes |
| 40 | + ${PROM_NAMESPACE}_backup_size $BACKUP_SIZE |
| 41 | +EOF |
| 42 | +fi |
0 commit comments