MySQL 数据库定时自动备份

创建备份目录

1
2
3
cd /home
mkdir backup
cd backup

创建备份 Shell 脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vim DatabaseName.sh
 
#!/bin/bash
/usr/local/mysql/bin/mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
 
对备份进行压缩:
 
#!/bin/bash
/usr/local/mysql/bin/mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
 
注意:
把 username 替换为实际的用户名;
把 password 替换为实际的密码;
把 DatabaseName 替换为实际的数据库名;

添加可执行权限

1
chmod u+x DatabaseName.sh

添加计划任务

1
2
3
4
crontab -e
01   3 * * * root/home/backup/DatabaseName.sh
 
表示每天 3 点钟执行备份

Crontab 的格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
第 1 列分钟 159
第 2 列小时 1230 表示子夜)
第 3 列日 131
第 4 列月 112
第 5 列星期 060 表示星期天)
第 6 列要运行的命令
 
下面是 crontab 的格式:
分 时 日 月 星期 要运行的命令
 
这里有 crontab 文件条目的一些例子:
 
30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的 21:30 重启 apache。
 
45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月 11022 日的 4 45 重启 apache。
 
10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的 1 10 重启 apache。
 
0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天 18 00 至 23 00 之间每隔 30 分钟重启 apache。
 
0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的 11 00 pm 重启 apache。
 
0 */1 * * * /usr/local/apache/bin/apachectl restart
每一小时重启 apache
 
#20160912 修正,感谢 @张琼的指正,之前写错了,*/1 和 * 表示的同样的意思,对于 / 的用法,可以参考另一篇文章 Crontab 中的除号到底怎么用?
 
0 23-7/1 * * * /usr/local/apache/bin/apachectl restart
晚上 11 点到早上 7 点之间,每隔一小时重启 apache
 
0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
每月的 4 号与每周一到周三的 11 点重启 apache
 
0 4 1 jan * /usr/local/apache/bin/apachectl restart
一月一号的 4 点重启 apache
原文地址:https://www.cnblogs.com/cyl048/p/11250409.html