美文网首页
linux 下面通过 cron 定时备份mysql

linux 下面通过 cron 定时备份mysql

作者: 川流不息attitude | 来源:发表于2021-04-29 14:57 被阅读0次
linux 下面通过 cron 定时备份mysql
  1. yum install vixie-cron

  2. yum install crontabs

  3. service crond start 开机自启

  4. cat /etc/crontab 查看

    service crond start //启动服务
    service crond stop //关闭服务
    service crond restart //重启服务
    service crond reload //重新载入配置

    crontab -u //设定特定用户的定时服务
    crontab -l //列出当前用户定时服务内容
    crontab -r //删除当前用户的定时服务
    crontab -e //编辑当前用户的定时服务
    在设定编辑之前都建议列出服务查看一下:crontab -l

  5. crontab -e 进入 设置脚本 * * * * /opt/dump_mysql.sh 语法

mysql 简单备份脚本

在执行shell脚本的时候,会出现‘$’\r’: 未找到命令’错误。

原因分析:在windows下编写的脚本,上传到服务器,存在多余的空格或换行,导致报错

  1. 解决办法

    手动删除多余空格或换行

  2. 解决办法:

    安装dos2unix yum install dos2unix

    使用dos2unix对脚本转换 dos2unix xxx.sh

#用户名
username=root
#密码
password=123456
#将要备份的数据库
database_name=mail

#保存备份文件最多个数
count=30
#备份保存路径
backup_path=/app/mysql_backup
#日期
date_time=`date +%Y-%m-%d-%H-%M`

#如果文件夹不存在则创建
if [ ! -d $backup_path ]; 
then     
    mkdir -p $backup_path; 
fi
#开始备份
mysqldump -u $username -p$password $database_name > $backup_path/$database_name-$date_time.sql
#开始压缩
cd $backup_path
tar -zcvf $database_name-$date_time.tar.gz $database_name-$date_time.sql
#删除源文件
rm -rf $backup_path/$database_name-$date_time.sql
#更新备份日志
echo "create $backup_path/$database_name-$date_time.tar.gz" >> $backup_path/dump.log

#找出需要删除的备份
delfile=`ls -l -crt  $backup_path/*.tar.gz | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于阈值
number=`ls -l -crt  $backup_path/*.tar.gz | awk '{print $9 }' | wc -l`

if [ $number -gt $count ]
then
  #删除最早生成的备份,只保留count数量的备份
  rm $delfile
  #更新删除文件日志
  echo "delete $delfile" >> $backup_path/dump.log
fi

相关文章

网友评论

      本文标题:linux 下面通过 cron 定时备份mysql

      本文链接:https://www.haomeiwen.com/subject/jzkwrltx.html