您的位置:首页 > 运维架构 > Shell

Linux shell脚本--mysql全备计划任务

2016-07-22 18:33 459 查看
#Linux下mysql的全备计划任务_shell小脚本,适用于数据量较小的mysql。
#!/bin/bash
PORT='5001'
USER='admin'
PASSWD='admin'
SOCKED="/data/socket/mysql${PORT}.sock"
BACKUP_FILE='/data/mysql/backup'  #注意磁盘空间情况
BACKUP_SAVE_DAYS='2'#删除N天之前的
CMD1='show databases;'
Time=`date +%Y%m%d_%H%M%S`
EVERY_DAY_BACKUP_DIR="${BACKUP_FILE}/${Time}_backup"
DB_LIST="${EVERY_DAY_BACKUP_DIR}/db_list.txt" #数据库名字存放文件
# function : check_db ===> db_list.txt
check_db()
{
mkdir -pv ${EVERY_DAY_BACKUP_DIR} >>/dev/null
touch ${DB_LIST} && chmod 755 ${DB_LIST} && chown -R mysql.mysql ${DB_LIST}
/usr/local/mysql/bin/mysql -u${USER} -p${PASSWD} -S ${SOCKED} -NBe"${CMD1}"|grep -v 'information_schema\|performance_schema\|mysql'>${DB_LIST}
}
# function : backup_db ===>xx.sql
backup_db()
{
/usr/local/mysql/bin/mysqldump -u${USER} -p${PASSWD} -S ${SOCKED} $1 >> ${EVERY_DAY_BACKUP_DIR}/$1.sql
}
# function : tar_file ===>xx.tar.gz
tar_file()
{
cd ${BACKUP_FILE}
tar -cf `date +%Y%m%d_%H%M%S`.tar.gz ${Time}_backup
rm -fr ${Time}_backup
}
# function : delete xx.tar.gz : <before n days>
delete_file()
{
cd ${BACKUP_FILE}
/usr/bin/find -name "*.tar.gz" -mtime +${BACKUP_SAVE_DAYS} -exec rm {} \;
}
# execute_main_process
# 1
check_db
# 2
cat ${DB_LIST}| while read line
do
oldIFS=${IFS}
backup_db ${line}
IFS=${oldIFS}
sleep 20
done
# 3
tar_file
# 4
#delete xx.tar.gz : before n days
delete_file ${BACKUP_SAVE_DAYS}
#----end
#注意:
#1.mysql的连接方式是指定socket文件,可以灵活更改。
#2.将每个库都备份成一个sql文件,然后全部压缩成x.tar.gz文件。每天生产一个。
#3. 可以适当更改脚本,备份单个库,单个表。
#crontal 计划任务:每天凌晨1点备份
#0 1 * * *       /bin/bash /data/mysql/backup/backup.sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计划任务 mysqldump