参考网上资料,及自己的排坑,做一个记录,以后便于查找
1. linux服务器
cd /
mkdir /data/mysql-data-back
找个位置放脚本 本人放在 /home/java/ 这里的路径会在定时设置的时候使用
dump脚本:mysqldump.sh
#!/bin/sh
DB_USER="数据库账号"
DB_PASS="数据库密码"
DB_DATA_NAME="数据库名称"
BakDir="/data/mysql-data-back"
echo "/usr/bin/mysqldump"
echo "-------------------------------------------" >> $BakDir
echo $(date +"%y-%m-%d %H:%M:%S") >> $BakDir
cd $BakDir
/usr/bin/mysqldump --no-defaults -u$DB_USER -p$DB_PASS $DB_DATA_NAME|gzip > $BakDir/db_`date +%F`.gz
exit 0
删除脚本:delmysqlbak.sh
#!/bin/bash
year=`date +%Y`
month=`date +%m`
month=`expr $month - 1`
if [ $month -eq 0 ];then
month=12
day=31
year=`expr $year - 1`
fi
if [ $month -lt 10 ];then
pre=0
fi
backdir=/data/mysql-data-back/$year$pre$month
rm -rf $backdir #删除上一个月的数据
2.安装 crontab
yum install -y vixie-cron
注意百度上都是 yum install -y vixie-cron命令,但是本人没有成功,现象如下:
[root@ts-test-db java]# yum install vixie-cron
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.ustc.edu.cn
No package vixie-cron available.
Error: Nothing to do
3.使用 yum install cronie 该命令
4.service crond start //启动
执行 crontab -l 出现:
解决:在 root 用户下输入 crontab -e按 Esc 按: wq 回车
原因: liunx服务器 第一次使用 crontab ,没有生成对应的文件导致的,执行了编辑(crontab -e)后 就生成了这个文件
相关 crontab 操作:
# service crond start #启动
# service crond stop #停止
# service crond start //启动服务
# service crond stop //关闭服务
# service crond restart //重启服务
# service crond reload //重新载入配置
# service crond status //查看crontab服务状态
# /etc/rc.d/init.d/crond restart #重启
# /etc/rc.d/init.d/crond reload #不中断服务,重新载入配置
# crontab -e 编辑配置文件
#crontab -u <-l, -r, -e>
# crontab -u 指定一个用户
# crontab -l 列出某个用户的任务计划
# crontab -r 删除某个用户的任务
# crontab -e 编辑某个用户的任务
5.设置定时任务 crontab -e
#一分钟执行一次(可以用来测试)
*/1 * * * * bash /home/java/mysqldump.sh
#每天晚上11点55执行
55 23 * * * bash /home/java/mysqldump.sh
#每个月的2号晚上11点30删除上月的备份
30 23 2 * * .bash /home/java/delmysqlbak.sh
注意: 粘贴标本到本地上传到liunx上,会不能直接使用,会报错:
-bash: ./mysql_dump.sh: /bin/sh^M: bad interpreter: No such file or directory
解决办法:
- vim mysql_dump.sh
- :set ff=unix
- :wq
以上步骤完成即可。