1.有些虚拟机没装crontab,需要安装
安装和启动命令
yum install vixie-cron
yum install crontabs
service crond start
service crond stop
service crond status
2.数据库备份直接命令(在不需要加入定时脚本的时候直接备份到自己设定的目录下)
数据库的备份---(数据库ip例如:127.0.0.1)
数据库备份语法,运行过程中出现error不要管,直到备份完成后会自动跳出备份界面
cd /data/back(备份目录)
mysqldump -u数据库用户名 -p数据库密码 --force 库名 > /data/back/BF_SC.sql
例如:mysqldump -uroot -puzhg --force db > /MDM/MYSQL/BF_SC.sql;
3.定时任务crontab来自动备份数据库
比如现在需要在每天晚上的1点30分自动备份MySQL数据库中的名字为mysql的库到一个指定的目录,比如root目录下的mysql_backup文件夹,那么备份命令就是下面这样
/usr/bin/mysqldump -uUsername -pPassword db > /root/mysql_backup/mysql_$(date +%Y%m%d_%H%M%S).sql
“Username”是我们数据库的用户
“Password”是这个用户的密码
“db”为我们需要备份的数据库中的某个数据库
因为我们每天晚上都会备份一下数据库,所以备份之后我们以当时的备份时间来命名备份文件,即为“mysql_$(date +%Y%m%d_%H%M%S).sql”,比如我2019年1月30号晚上1点30分整备份的数据库即为“mysql_20190130_013000.sql”。
4.删除之前备份的数据库
我们可以在每天备份时同时删除一段时间之前的备份数据,比如我们需要删除30天之前的备份
find /root/mysql_backup/ -mtime +30 -type f | xargs rm -f
“/root/mysql_backup/”为我们备份文件的保存目录
“-mtime +30”是设置时间为30天前
“-type f”表明查找的类型是文件
这行命令完成的操作是:查找/root/mysql_backup/目录下30天之前的文件并且删除。
备份跟删除的命令我们都写好了,那么我们可以通过crontab来让系统每天自动的去执行这两个任务
5.脚本的书写(crontab -e 查看所有脚本运行计划)
crontab解释:
crontab -u //设定特定用户的定时服务
crontab -l //列出当前用户定时服务内容
crontab -r //删除当前用户的定时服务
crontab -e //编辑当前用户的定时服务
创建一个任务脚本mysql_autobackup.sh,写入我们刚才的两条命令并给于文件最高权限
赋权
chmod 770 mysql_autobackup.sh
脚本内容:
#!/bin/bash
/usr/bin/mysqldump -uUsername -pPassword mysql > /root/mysql_backup/mysql_$(date +%Y%m%d_%H%M%S).sql
find /root/mysql_backup/ -mtime +30 -type f | xargs rm -f
crontab -e 写入计划任务并保存
30 01 * * * /root/mysql_autobackup.sh
表示每天晚上1点30分会执行root目录下的mysql_autobackup.sh脚本,就是我们上面编写的备份跟删除操作的脚本,这样就可以完成系统每天自动备份数据库并且会自动的去查找超过30天的备份并删除
crontab用法:
1.在设定编辑之前都建议列出服务查看一下:crontab -l
2.然后编辑定时任务:crontab -e 进入编辑界面会显示已存在的定时任务
添加定时任务
3.前面五个*号代表
前面五位是定时执行的时间周期
第一个 * 表示分钟:取值范围 0-59
第二个 * 表示小时:取值范围0-23
第三个 * 表示天数:取值范围1-31
第四个 * 表示月份:取值范围1-12
第五个 * 表示每周:取值范围0-6
****1 备份脚本路径----每一周备份一次
4.添加完后service crond restart重启