暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Shell script to backup MySQL database(备份MySQL 脚本)

原创 Anbob 2014-03-26
618
this is shell script to backup mysql database, using mysqldump to dump all databases into separate files, and encrypt backup file using zip password option, Generate a collective file using tar, ftp to ftp server, to send email to DBA .
#!/bin/bash
#
# Shell script to backup MySQL database with mysqldump
# dump all databases into separate files.
# Author: weejar
# create date: 2014-3-25
# email: weejar@gmail.com
# Copyright (C) 2014 anbob.com
# Get date in yyyy-dd-mm format
TIMESTAMP=$(date +"%F")
# MYSQL_USER="root"
# MYSQL_PASSWORD="*******"
# ZIP BACKUP FILE PASSWORD
ZIPPWD=888888
# backup file keep in local NUM times
NUM=3
# Linux bin path
MYSQL=/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
ZIP=/usr/bin/zip
FTP=/usr/bin/ftp
# Get HOST IP address
IPADR=`/sbin/ip addr show eth0|grep inet|awk '{print $2}'|awk -F/ '{print $1}'`
# Root directory where backup will be stored
BACKUP_DIR=/data/backup/sqldump
# Main directory where backup log will be store
LOGFILE=${BACKUP_DIR}/mysqldump_$TIMESTAMP.log
# Summary backup file
BACKUPFILE=${IPADR}_Mysqldump_${TIMESTAMP}.tar
# Ftp backup directory will be upload
FTPDIR="/g:/backup"
# DBA email to send logfile
EMAIL=dba@anbob.com
# Create direcotry if $BACKUP_DIR doesn't exist.
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p $BACKUP_DIR
fi
# Redirect output to LOGFILE
exec 1> ${LOGFILE} 2>&1
echo $(date +"%F %r")
#databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`
# List need backup databases
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
echo "backup $db is running..."
#$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
$MYSQLDUMP --force --opt --databases $db | $ZIP -P $ZIPPWD > ${BACKUP_DIR}/${IPADR}_${db}_${TIMESTAMP}_encrypt.zip
# Verify BACKUP
if [ $? -ne 0 ]; then
echo "backup $db fails!"
else
echo "backup $db completed!"
fi
echo $(date +"%F %r")
echo "********************************"
done
# Merge backup file
tar cvf ${BACKUP_DIR}/${BACKUPFILE} ${BACKUP_DIR}/${IPADR}_*_${TIMESTAMP}_encrypt.zip ${LOGFILE}
# Remove expiry backup file
rm ${BACKUP_DIR}/*.zip
ls -rt ${BACKUP_DIR}/${IPADR}_*mysqldump.tar|head -n -$NUM
echo 'deleting...'
ls -rt ${BACKUP_DIR}/${IPADR}_Mysqldump*.tar|head -n -$NUM|xargs rm -f
# Upload backup file to FTP Server ,also you should configuration ftp IP,USERNAME,PASSWORD Variable
$FTP -n <<EOF
        open 192.168.212.110
        user ftpuser ftppassword
        cd $FTPDIR
        binary
lcd $BACKUP_DIR               
        put ${BACKUPFILE}
        bye
EOF
if [ $? -ne 0 ]; then
       echo "ftp upload backup file fails!"         
else
       echo "ftp upload backup file successful!"
fi
 echo  $(date +"%F %r")
 echo "********************************"
# send email ,About how to send email on linux (http://www.anbob.com/archives/1753.html)
cat $LOGFILE | mail -s "${IPADR} backup info" $EMAIL
# end
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论