crond + cron 实现定时执行
- 安装
yum install crond- 启动
service crond start- 查看状态
service crond status- 执行
crontab xx.cron- 查看任务列表
crontab -l- 删除所有任务
crontab -r
- 示例:每分钟写入 Good morning 到 mine.cron
[root@ecs-f1dd-0001 fztmp]# echo ‘* * * * * echo “Good morning.” >> /fztmp/test.txt’ > mine.cron
[root@ecs-f1dd-0001 fztmp]# crontab mine.cron
创建一个配置文件,放置需要备份的服务器配置:
ip root **** archive
ip root **** archive
ip root **** archive
ip root **** archive
备份脚本-mysql_backup_script.sh:
#!/bin/bash
# 保存备份个数,备份 7 天数据
number=7
# 备份保存路径
backup_dir=/mysql_backup/script
# 读取服务器配置文件
while read line; do
IFS=" " read -r ip username password database_name <<< "$line"
# 日期
dd=`date +%Y-%m-%d-%H-%M-%S`
# 如果文件夹不存在则创建
if [ ! -d $backup_dir ]; then
mkdir -p $backup_dir
fi
# 备份工具
#tool=`docker exec mysql mysqldump`
# 简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
docker exec mysql mysqldump -h$ip -P3306 -u$username -p$password $database_name -d> $backup_dir/$database_name-$ip-$dd.sql
# 写创建备份日志
echo "create $backup_dir/$database_name-$ip-$dd.dupm" >> $backup_dir/log.txt
echo "docker exec -it mysql mysqldump -h$ip -P3306 -u$username -p$password $database_name -d" >> $backup_dir/log.txt
# 找出需要删除的备份
delfile=`ls -l -crt $backup_dir/${database_name}-${ip}*.sql | awk '{print $9 }' | head -1`
# 判断现在的备份数量是否大于 $number
count=`ls -l -crt $backup_dir/${database_name}-${ip}*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]; then
# 删除最早生成的备份,只保留 number 数量的备份
rm $delfile
# 写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
done < $backup_dir/servers.conf
给脚本文件授权:
chmod +x /mysql_backup/mysql_dump_script.sh
创建执行文件-dump.cron,每天凌晨三点执行:
0 3 * * * /mysql_backup/mysql_backup_script.sh
创建定时任务:
crontab dump.cron
查看执行错误日志:
cat /var/spool/mail/root
目录结构:
大功告成!
参考文章:MySQL 定时备份数据库