下载参考示例脚本: 全量备份MySQL脚本-10天有效删除
编辑/root/mysql_dump/mysql_back.sh
文件,文件内容如下。
如果目录不存在,需要执行命令mkdir root/mysql_dump 创建。
赋予可执行权限chmod +x root/mysql_dump/mysql_back.sh。
建议将备份目录BCK_DIR="/root/mysql_dump/data"
修改为实际的存储盘位置。
#!/bin/sh
# File: root/mysql_dump/mysql_back.sh
# Database info
DB_MOP="mop"
DB_OCRM="ocrm"
DB_USER="root"
DB_PASS="computech"
# Others vars
# whereis mysqldump
# IS ` but not '
BIN_DIR="/usr/bin"
BCK_DIR="/root/mysql_dump/data"
DATE=`date +%Y%m%d_%H%M%S`
# TODO
if [ ! -d ${BCK_DIR} ];then
mkdir -p ${BCK_DIR}
fi
echo "============ Start backup database mop and ocrm ============" ${DATE}
${BIN_DIR}/mysqldump --opt --no-data -u$DB_USER -p$DB_PASS ${DB_MOP} | gzip \
> ${BCK_DIR}/${DB_MOP}_${DATE}.nodata.sql.gz
${BIN_DIR}/mysqldump --opt -u$DB_USER -p$DB_PASS ${DB_MOP} | gzip \
> ${BCK_DIR}/${DB_MOP}_${DATE}.sql.gz
${BIN_DIR}/mysqldump --opt --no-data -u$DB_USER -p$DB_PASS ${DB_OCRM} | gzip \
> ${BCK_DIR}/${DB_OCRM}_${DATE}.nodata.sql.gz
${BIN_DIR}/mysqldump --opt -u$DB_USER -p$DB_PASS ${DB_OCRM} | gzip \
> ${BCK_DIR}/$DB_OCRM_${DATE}.sql.gz
echo "Delete 7-day-old backups"
find ${BCK_DIR} -mtime +7 -name "*sql.gz*" -exec rm -rf {} \;
echo "Delete 7-day-old backups success"
echo "============ End backup database mop and ocrm ============" ${DATE}
编辑定时任务
执行命令crontab -e
编辑定时计划任务。
# 每天零点备份mysql数据库
00 00 * * * root/mysql_dump/mysql_back.sh
重启定时任务
最后一步,重新载入定时任务配置,使计划生效。到此为止,完成MySQL备份定时任务的全部配置。记得第二天去检查一下备份目录下是否存在备份文件。
service crond reload
其他参考
cron 常用命令
service crond status // 服务状态
service crond start // 启动服务
service crond stop // 关闭服务
service crond restart // 重启服务
service crond reload // 重新载入配置
cron表达式参考
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0 表示星期天)
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、","
*代表所有的取值范围内的数字,
"/"代表每的意思,"*/5"表示每5个单位,
"-"代表从某个数字到某个数字,
","分开几个离散的数字。