MySQL_linux下mysql数据库自动定时备份

MySQL_linux下mysql数据库自动定时备份


 

1、创建文件夹

mysql-backup
# 创建文件夹 mysql-backup
[root@Zab mysql-backup]# pwd
/home/ruoyi/mysql-backup
[root@Zab mysql-backup]#

 

2、编写shell备份脚本

vi mysql_backup.sh

#!/bin/bash

#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/home/ruoyi/mysql-backup/data
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=123456
#将要备份的数据库
database_name=ry-vue

#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
    mkdir -p $backup_dir;
fi

echo '开始导出数据库...'

#简单写法 mysqldump -uroot -p123456 ry-vue | gzip > /home/ruoyi/mysql-backup/data/$(date +%Y%m%d_%H%M%S)_ry-vue.sql.gz

$tool -u $username -p$password --databases  $database_name | gzip > $backup_dir/$database_name-$dd.sql.gz


#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

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

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

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

echo '导出成功!!! >_< '

 

3、添加可执行权限

chmod u+x mysql_backup.sh

添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;

./mysql_backup.sh

 

4、设置linux定时任务

添加计划任务执行命令:

crontab -e

这时就像使用vi编辑器一样,可以对计划任务进行编辑。

输入以下内容并保存:

# 意思是每3分钟执行一次shell脚本“/home/ruoyi/mysql-backup/mysql_backup.sh”。
*/3 * * * * /home/ruoyi/mysql-backup/mysql_backup.sh
# 30 23 * * * /home/ruoyi/mysql-backup/mysql_backup.sh
每天 23:30执行
mysql_backup.sh脚本

  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
  • 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
通过一下命令可以查看定时任务
# 通过一下命令可以查看定时任务
crontab -l

测试任务是否执行

1.通过 ls 命令查看是否生成备份文件

2.如果任务执行失败了,可以通过以下命令查看任务日志:

tail -f /var/log/cron

备份示例

[root@Zab data]# ll
total 5716
-rw-r--r-- 1 root root 340583 May 30 10:30 20220530_103023_ry-vue.sql.gz
-rw-r--r-- 1 root root   1104 May 30 11:39 log.txt
-rw-r--r-- 1 root root 340645 May 30 10:50 ry-vue-2022-05-30-10-50-57.sql.gz
-rw-r--r-- 1 root root 340646 May 30 10:57 ry-vue-2022-05-30-10-57-01.sql.gz
-rw-r--r-- 1 root root 340645 May 30 11:00 ry-vue-2022-05-30-11-00-01.sql.gz
-rw-r--r-- 1 root root 340648 May 30 11:03 ry-vue-2022-05-30-11-03-01.sql.gz
-rw-r--r-- 1 root root 340646 May 30 11:06 ry-vue-2022-05-30-11-06-01.sql.gz
-rw-r--r-- 1 root root 340649 May 30 11:09 ry-vue-2022-05-30-11-09-01.sql.gz
-rw-r--r-- 1 root root 340608 May 30 11:12 ry-vue-2022-05-30-11-12-01.sql.gz
-rw-r--r-- 1 root root 340649 May 30 11:15 ry-vue-2022-05-30-11-15-01.sql.gz
-rw-r--r-- 1 root root 340667 May 30 11:18 ry-vue-2022-05-30-11-18-01.sql.gz
-rw-r--r-- 1 root root 340667 May 30 11:21 ry-vue-2022-05-30-11-21-01.sql.gz
-rw-r--r-- 1 root root 340667 May 30 11:24 ry-vue-2022-05-30-11-24-01.sql.gz
-rw-r--r-- 1 root root 340668 May 30 11:27 ry-vue-2022-05-30-11-27-01.sql.gz
-rw-r--r-- 1 root root 340667 May 30 11:30 ry-vue-2022-05-30-11-30-01.sql.gz
-rw-r--r-- 1 root root 340667 May 30 11:33 ry-vue-2022-05-30-11-33-01.sql.gz
-rw-r--r-- 1 root root 340666 May 30 11:36 ry-vue-2022-05-30-11-36-01.sql.gz
-rw-r--r-- 1 root root 340668 May 30 11:39 ry-vue-2022-05-30-11-39-01.sql.gz
[root@Zab data]#
posted @ 2022-05-30 11:43  梅子猪  阅读(1167)  评论(0编辑  收藏  举报