crontab定时备份数据库

crontab定时备份数据库

问题背景

  1. 操作系统redhat有问题,vim/crontab -e 等操作文档命令时直接卡死,只能上传文档覆盖原服务器文档达到编辑文档的目的
  2. 需要用到系统crontab服务定时全量备份数据库

具体操作步骤如下

1. 编写定时任务脚本

mysql为docker安装,脚本在宿主机上执行docker容器命名进行备份。

# 创建并编写sh脚本
vim backup_db.sh
# 内容如下,脚本全路径记下下文用到
docker exec -i mysql /bin/bash -c 'mysqldump -uroot -pxxxx  tim_prod --skip-extended-insert  --hex-blob ' > /tim/mysql/data_back/data_`date +\%F`.sql;

2.编辑crontab任务

正常情况下输入crontab -e可以直接进行编辑,但是本次操作的系统输入这个命令系统卡死无响应,只能本地编辑好sh文档上传至服务器和crontab -e命令编辑效果一样

# 创建root文件(文件名称就是root没有后缀),第一条定时任务时定时备份整个数据库指定的脚本路径为上一步创建的sh脚本
1 0 * * * root sh /tim/mysql/back_script/backup_db.sh
1 2 * * * root find /share/qeoten/mysql_back -type f -ctime +15 -name '*.sql' | xargs ##rm -rf
# 创建后后文件上传至 /var/spool/cron 目录下如果存在则覆盖

重启crontab,使root配置文件生效

service crond start  //启动服务
service crond stop   //关闭服务
service crond restart //重启服务
service crond reload  //重新载入配置
service crond status  //查看服务状态 
# 查看配置文件是否生效
crontab -l

3.查看crontab执行日志

若定时时间已过,但是没有成功执行,则查看具体定时任务执行日志

# 日志文件
/var/log/cron
# 查看日志,
Feb 21 11:20:01 PVVM0T0008 CROND[123933]: (root) CMD (sh /tim/mysql/back_script/backup_db.sh^M)

发现执行命令脚本后边多了 【M】字符,问题原因是,我在window上编辑的sh,两条定时任务中间有换行符导致的。解决方案:在Linux上编辑该文件,我操作的主机编辑命令会卡死,我是在另一台Linux服务器上编辑好该文件,然后再上传至目标服务器,达到linux下编辑该sh脚本的效果。然后再执行查看日志已经没有【M】,再查看备份目录,已出现备份文件,到此定时任务配置成功。

Feb 21 11:20:01 PVVM0T0008 CROND[123933]: (root) CMD (sh /tim/mysql/back_script/backup_db.sh)
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值