本文共 1598 字,大约阅读时间需要 5 分钟。
#Linux下mysql的全备计划任务_shell小脚本,适用于数据量较小的mysql。#!/bin/bashPORT='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.txtcheck_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.sqlbackup_db(){ /usr/local/mysql/bin/mysqldump -u${USER} -p${PASSWD} -S ${SOCKED} $1 >> ${EVERY_DAY_BACKUP_DIR}/$1.sql}# function : tar_file ===>xx.tar.gztar_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 : delete_file(){ cd ${BACKUP_FILE} /usr/bin/find -name "*.tar.gz" -mtime +${BACKUP_SAVE_DAYS} -exec rm {} \;}# execute_main_process# 1check_db# 2cat ${DB_LIST}| while read linedo oldIFS=${IFS} backup_db ${line} IFS=${oldIFS} sleep 20done# 3 tar_file# 4 #delete xx.tar.gz : before n daysdelete_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
转载于:https://blog.51cto.com/11805203/1828901