Skip to content

Instantly share code, notes, and snippets.

@sorah
Created February 11, 2014 19:25
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 sorah/d4390126e249e7762580 to your computer and use it in GitHub Desktop.
Save sorah/d4390126e249e7762580 to your computer and use it in GitHub Desktop.
#!/bin/bash
WORKDIR=/home/USER/workdir
TMP_DIR=/home/USER/tmp
FAILED_LOG_DIR=/home/USER/failed_logs/
LOG_DIR=/home/USER/logs/
PASSPHRASE_FILE=/home/USER/.xtrabackup-passphrase
MYSQL_PASSWORD='...'
TIMESTAMP="$(date '+%Y-%m-%d_%H%M%S')"
LOG_FILE=${LOG_DIR}${TIMESTAMP}.log
BACKUP_ARCHIVE="/home/USER/archives/${TIMESTAMP}.tar.bz2"
PROGRESS_ARCHIVE="${BACKUP_ARCHIVE}.progress"
set -e
echo "---- Preparing backup"
set -x
sudo -u USER rm -rf "${TMP_DIR}/tmpdir"
sudo -u USER mkdir "${TMP_DIR}/tmpdir"
sudo chgrp mysql "${TMP_DIR}/tmpdir"
sudo chmod 770 "${TMP_DIR}/tmpdir"
sudo -u USER bash -c 'rm -rf '"${LOG_DIR}"'*'
sudo -u USER touch "${LOG_FILE}"
sudo chown "$(id -u)" "${LOG_FILE}"
sudo chmod 640 "${LOG_FILE}"
sudo -u USER touch ${PROGRESS_ARCHIVE}
sudo -u USER chmod 600 ${PROGRESS_ARCHIVE}
set +x
echo "---- innobackupex"
sudo -u mysql innobackupex \
--ibbackup=/usr/bin/xtrabackup_55 \
--user=USER --password="${MYSQL_PASSWORD}" \
--slave-info \
--tmpdir="${TMP_DIR}/tmpdir" \
--stream=tar \
"${WORKDIR}" 2>$LOG_FILE | sudo -u USER bash -c "bzip2 - > ${PROGRESS_ARCHIVE}"
set +e
tail -n5 "${LOG_FILE}" | grep -q 'innobackupex: completed OK!'
okay=$?
set -e
sudo chown USER:USER "${LOG_FILE}"
if [ "_${okay}" = "_0" ]; then
echo "Succeeded."
sudo -u USER mv "${PROGRESS_ARCHIVE}" "${BACKUP_ARCHIVE}"
else
sudo -u USER cp "${LOG_FILE}" "${FAILED_LOG_DIR}"
sudo -u USER rm "${PROGRESS_ARCHIVE}"
echo "Failed."
exit 1
fi
set -x
echo "---- encrypt"
sudo -u USER touch "${BACKUP_ARCHIVE}.enc"
sudo -u USER chmod 600 "${BACKUP_ARCHIVE}.enc"
sudo -u USER openssl enc -aes-256-cbc \
-a \
-pass file:"${PASSPHRASE_FILE}" -salt \
-in "${BACKUP_ARCHIVE}" -out "${BACKUP_ARCHIVE}.enc"
echo "---- cleanup"
sudo -u USER rm "${BACKUP_ARCHIVE}"
sudo -u USER rm -rf "${TMP_DIR}/tmpdir"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment