Skip to content

Instantly share code, notes, and snippets.

@zhoulifu
Created June 17, 2016 03:15
Show Gist options
  • Save zhoulifu/220bd668e6f90251efe3bd08ca6b354d to your computer and use it in GitHub Desktop.
Save zhoulifu/220bd668e6f90251efe3bd08ca6b354d to your computer and use it in GitHub Desktop.
script to do mysql backup
#!/usr/bin/env bash
# Func: mysql database backup
# Date: 2016-06-07
USER="user"
PSW="psw"
DUMP_BIN=`which mysqldump`
ADMIN_BIN=`which mysqladmin`
MYSQL_BIN=`which mysql`
BACK_DIR=dir
if [ ! -d ${BACK_DIR} ]; then
mkdir -p ${BACK_DIR}
fi
DATE=`date '+%Y-%m-%d'`
LOG_FILE=${BACK_DIR}/log.${DATE}
DELETED_FILE=/tmp/mysql_delete
echo "[$(date +'%H:%M:%S')]dump beginning..." >> ${LOG_FILE}
# Dump all databases
DBS=`${MYSQL_BIN} -u${USER} -p${PSW} -Bse 'show databases'`
# Flush binlog before backup
${ADMIN_BIN} -u${USER} -p${PSW} flush-logs
for DB in ${DBS[*]}; do
${DUMP_BIN} --opt -u${USER} -p${PSW} ${DB} > ${BACK_DIR}/${DB}_${DATE}.sql 2>/dev/null
done
# Delete file created before 7 days ago
find ${BACK_DIR} -atime +7 -name '*.sql' -print > ${DELETED_FILE}
if [ $(ls -l ${DELETED_FILE} | awk '{print $5}') -gt 0 ]; then
cat ${DELETED_FILE} | while read LINE; do
echo "[$(date +'%H:%M:%S')]delete:${LINE}" >> ${LOG_FILE}
rm -rf ${LINE}
done
fi
echo "[$(date +'%H:%M:%S')]dump complete!" >> ${LOG_FILE}
rm -rf ${DELETED_FILE}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment