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://mp.weixin.qq.com/s?__biz=MzA3OTgyMDcwNg==&mid=2650631459&idx=1&sn=63479c55ea99b9db09e40696373721c4&chksm=87a46feeb0d3e6f8c3562a314c962760a52c5064599791fa00976f21a91348724854325a1a5d&mpshare=1&scene=23&srcid=0823Ts1Ic9kGVSPzTLjLPPUR#rd  

### 如何配置 MySQL 数据库定时自动备份方案 #### 创建备份脚本 为了实现自动备份,需创建一个 Shell 脚本来执行 `mysqldump` 命令。此脚本应包含数据库用户名、密码以及目标数据库名称等必要参数。 ```bash #!/bin/bash # 设置日期格式作为文件名的一部分 DATE=$(date +"%Y%m%d_%H%M%S") /usr/local/mysql/bin/mysqldump -u your_database_user -pyour_database_password your_database_name > /path/to/your/backup/directory/${DATE}_database_backup.sql ``` 上述代码展示了如何构建基本的备份逻辑[^2]。 #### 添加可执行权限 为了让系统能够正常调用该脚本,需要赋予其相应的执行权限: ```bash chmod +x backup_mysql.sh ``` 这一步骤确保了后续通过计划任务或其他方式触发时不会因为权限不足而失败。 #### 编辑 Crontab 文件来安排定期作业 接下来,在 Linux 中利用 cron 来设定周期性的备份操作。打开 crontab 编辑器并通过添加一行定义每日凌晨一点启动备份过程: ```bash crontab -e ``` 在编辑界面内加入如下行以指定具体的时间点和要运行的任务命令: ```plaintext 0 1 * * * /full/path/to/backup_mysql.sh >> /data/backups/logs/mysqldump.log 2>&1 ``` 此处的日志重定向(`>>`)会把标准输出追加至日志文件中;错误信息也会被捕获并写入同一位置以便日后审查[^3]。 #### 解决常见问题 如果遇到诸如 "mysqldump: 未找到命令" 的提示,则可能是由于环境变量 PATH 中缺少 MySQL 工具的位置所致。可以通过软链接的方式解决这个问题: ```bash ln -fs /usr/local/mysql/bin/mysqldump /usr/bin/ ``` 另外一种方法是直接修改系统的环境变量配置文件 `/etc/profile` 或者用户的 `.bashrc` 文件,增加 MySQL bin 目录到 PATH 变量里去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值