场景
当今互联信息爆炸时代,数据至关重用,生产服上数据备份一定要做,以防万一!
案例
centos7下使用定时任务crontab+mysqldump备份mysql
1:自定义简单备份脚本
1:新建脚本bst_mysql_backups.sh并编辑
vi bst_mysql_backups.sh
2:脚本内容
#!/bin/bash
#备份目录
backups_dir=/home/mysql_backups/bst_mysql_backups
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份命令
tool=/usr/bin/mysqldump
#用户名
username=xxx
#密码
pwd=xxx
#需要备份的数据库
database=bst
#如果文件夹不存在则创建
if [ ! -d $backups_dir ];
then
mkdir -p $backups_dir;
fi
#备份数据库表结构和数据
$tool -u$username -p$pwd $database > $backups_dir/$database-$dd.sql
#写创建备份日志
echo "create %backups_dir/$database_name-$dd.dupm >> $backups_dir/log.txt"
3:按:wq保存退出;
4:给脚本添加可执行权限
chmod u+x bst_mysql_backups.sh
这时脚本变绿色表示可执行了,也可自行执行测试是否脚本有语法错误,这里省略测试
2:使用crontab实现定时备份
1:查看是否安装了crontab
crontab -l
执行命令后输出“no crontab for root”表示已安装好了,没有安装的请自行百度安装,我用的是阿里的centos,自带
2:添加任务
先打开
crontab -e
添加jop,每分钟执行一次
*/1 * * * * /home/mysql_backups/shell/bst_mysql_backups.sh
最后:wq保存退出即可,然后执行crontab -l 即可看到刚刚添加的任务
这里列出crontab的一些时间参数使用
crontab文件格式:
* * * * * command命令
minute hour day month week command命令
分 时 天 月 星期 命令
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
特殊字符:
星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。
逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。
中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。
3:如果想删除cron中的jop怎么办?很简单
1:删除cron中的任务方法:直接crontab -e进入,删除对应任务那一行,保存退出即可。
2:执行命令
ps aux |grep bst_mysql_backups.sh
使用kill-9 进程号杀死即可。.如果此shell为单任务时,立马ok,搞定,但如果此shell里又调用了其他子shell时,则你需要去查到子shell的进程号,再kill掉,这样才能彻底将此定时停止掉。