新31天的定时备份,保留最数据

一、背景

概述: 对于我们的生产数据库,都需要定时做备份,以免数据丢失。比如每日备份,同时也需要将以前的进行清理。此处我展示的是只保留最新的 31 天数据。

二、备份命令使用

  1. mysqldump 命令是 mysql 可以直接用来进行数据库备份的命令。使用方式如下:
    1. # 语法
    2. mysqldump -u<username> -p<password> dbname tablename1 tablename2... > /path/to/***.sql
    3. # 示例
    4. mysqldump -u root -p '123456' mytest student > /home/back/student_bak.sql
  2. 由于在使用时要输入账号密码,可能有的版本会不成功直接输明文,此时我们需要在 mysql 的配置文件(cnf配置)添加账号密码。
    1. # 编辑文件
    2. vim /etc/mysql/mysql.conf.d/mysqld.cnf

    具体的配置如下:

    1. # 备份
    2. [mysqlddump]
    3. user=root
    4. password=123456
  3. 保存退出,然后重启 mysql
    1. systemctl restart mysql

三、编写备份脚本

  1. 创建一个文件夹用来保存备份数据,我的是:
    1. /home/blog/back
  2. 添加备份脚本 mysql_blog_backup.sh(只保留最新的 31 天数据):
    1. #!/bin/bash
    2. #保存备份个数,备份31天数据
    3. number=31
    4. #备份保存路径
    5. backup_dir=/home/blog/back/sql
    6. #日期
    7. dd=`date +%Y-%m-%d-%H-%M-%S`
    8. #备份工具
    9. tool=mysqldump
    10. #用户名
    11. username=root
    12. #密码
    13. password=你的密码
    14. #将要备份的数据库
    15. database_name=blog
    16. #如果文件夹不存在则创建
    17. if [ ! -d $backup_dir ];
    18. then
    19. mkdir -p $backup_dir;
    20. fi
    21. #简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
    22. $tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
    23. #写创建备份日志
    24. echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
    25. #找出需要删除的备份
    26. delfile=`ls -l -crt $backup_dir/*.sql | awk '{ print $9 }' | head -1`
    27. #判断现在的备份数量是否大于$number
    28. count=`ls -l -crt $backup_dir/*.sql | awk '{ print $9 }' | wc -l`
    29. if [ $count -gt $number ]
    30. then
    31. #删除最早生成的备份,只保留number数量的备份
    32. rm $delfile
    33. #写删除文件日志
    34. echo "delete $delfile" >> $backup_dir/log.txt
    35. fi
  3. 给脚本赋值执行权限
    1. chmod u+x mysql_blog_backup.sh
  4. 此时可以直接执行该 sh 脚本来验证执行情况

四、定时任务

  1. linux 自带的 corntab 命令,精确到分。此处用到的两个命令
    1. crontab -e # 编辑crontab定时任务
    2. crontab -l # 查询crontab任务
  2. 以下为常用的定时任务服务的命令
    1. service cron start //启动服务
    2. service cron stop //关闭服务
    3. service cron restart //重启服务
    4. service cron reload //重新载入配置
    5. service cron status //查看服务状态
  3. 添加执行我们备份脚本的定时任务
    1. # 进入定时任务编辑
    2. crontab -e
    3. # 添加,每天凌晨 3 点执行一次脚本
    4. 00 03 * * * /home/blog/back/mysql_blog_backup.sh
  4. 此时再重新载入配置就可以了。

结果

  1. 看到下图就代表任务添加成功
    2020060900544758-1
上一篇:蘑菇不熟吃了有毒吗 蘑菇没煮熟会中毒吗
下一篇:为啥鹅蛋很少人吃 卖鹅蛋的也很少 我也是刚知道 真的涨知识了