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]#