一开始没想到我会弄这个,以前觉得数据库一般很安全不需要定时备份。但是前几天的经历还是让我意识到了定时备份数据库的重要性,一个作业的数据库莫名其妙没了,后面通过快照回滚找回来了。后来就想到定时备份数据库了,经过一番折腾终于完成了这个功能。接下来就详细记一下 Linux定时备份MySQL数据库 的教程。

系统环境

  1. CentOS 7.6.1810
  2. MySQL 5.7.26

Step 1:创建目录

### 创建定时脚本目录
mkdir -p /home/backup/mysql/shell
### 创建sql文件放置目录
mkdir -p /home/backup/mysql/sql

Step 2:编写备份脚本

在我们上一步新建的 /home/backup/mysql/shell 下 新建一个 backup.sh,内容如下

### 数据库用户
db_user="root"
### 数据库用户密码
db_passwd="*******"
### 要备份的数据库名称
db_name="example"
### 备份出来的sql名称
name="example-"$(date "+%Y-%m-%d-%H-%M-%S")

###前面路径是mysql绝对路径,后面/home/backup/mysql/sql/是要备份到的目录
/www/server/mysql/bin/mysqldump -u$db_user -p$db_passwd $db_name>/home/backup/mysql/sql/$name.sql

Step 3:给脚本添加可执行权限

这一步很重要,不给backup.sh添加可执行权限,定时任务是无法完成备份的。

chmod +x backup.sh

Step 4: 将脚本添加到定时任务

首先使用如下命令编辑定时任务

crontab -e 

编辑的内容如下

###每一分钟执行一次后面的脚本(设置的周期短易于观察)
*/1 * * * * /home/backup/mysql/shell/backup.sh

Step 5 :查看执行情况

去我们制定的备份目录/home/backup/mysql/sql查看是否输出了sql文件

可以看到每一分钟都输出了sql文件,让我们看看里面的内容

确实看到了user表的数据,至此也就大功告成

附:crontab 定时任务时间格式设定

crontab 文件的格式

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} 

  1. minute: 区间为 0 – 59 
  2. hour: 区间为0 – 23 
  3. day-of-month: 区间为0 – 31 
  4. month: 区间为1 – 12. 1 是1月. 12是12月. 
  5. Day-of-week: 区间为0 – 7. 周日可以是0或7.

示例

*/1 * * * * 每分钟运行一次命令
0 * * * * 每小时执行
0 0 * * * 每天执行
0 0 * * 0 每周执行
0 0 1 * * 每月执行

标签云

ajax AOP Bootstrap cdn Chevereto CSS Docker Editormd GC Github Hexo IDEA JavaScript jsDeliver JS樱花特效 JVM Linux Live2D markdown Maven MyBatis MyBatis-plus MySQL Navicat Oracle Pictures QQ Sakura SEO Spring Boot Spring Cloud Spring Cloud Alibaba SpringMVC Thymeleaf Vue Web WebSocket Wechat Social WordPress Yoast SEO 代理 分页 图床 小幸运 通信原理

Linux定时备份MySQL数据库
Linux定时备份MySQL数据库