Linux通过cron自动备份数据库

这也应该是个很常见的需求了,找了点文章试了下,还是很简单的。

References:

Step1:手动备份MySQL数据库
通过标准方式安装的MySQL可以使用mysqldump工具,可以像下面这样备份数据库:

$ mysqldump -u<用户名> -p<密码> <数据库名> > exampledb.sql

比如:

$ mysqldump -uroot -p123456 test > test.sql

注意:在-u-p后面没有空格

上面的命令会导出普通SQL查询语句,但是其中的文本可以被压缩以节省空间,所以压缩一下备份文件:

$ mysqldump -uroot -p123456 test | gzip > test.sql.gz

如果你想备份服务器上的所有数据库,使用"-all-databases"而不是具体的数据库名,像这样:

$ mysqldump -uroot -p123456 -all-databases | gzip > test.sql.gz

注:-p后面也可以不写密码,但是如果这个用户有密码会在回车命令后要求输入密码,不利于脚本执行。最好是新建个专门的没密码用户来干这件事。
Step2:设置定时任务自动备份MySQL数据库
你已经知道如何手动备份数据库了,下面将这件事做成定时任务自动化。
首先创建文件夹:

$ mkdir /var/backups/mysql

由于备份是在提供历史数据时更有意义,所以给这些备份文件一个更有意义的命名,比如增加日期和时间后缀:

$ mysqldump -uroot -p123456 test | gzip > /var/backups/mysql/test.$(date +”%Y_%m_%d_%I_%M”).sql.gz

虽然这个命令只有一行,可以直接写在cron中,但是我们还是将它做成shell脚本,有点仪式感嘛~~!
比如创建一个脚本文件"/usr/local/applications/mysql_dump_bak.sh",脚本权限设为700,内容如下:

#!/bin/bash
mysqldump -uroot -p123456 test | gzip > /var/backups/mysql/test.$(date +”%Y_%m_%d_%I_%M”).sql.gz

然后就是配置定时任务cron,关于cron的信息这里就不多说了,相信有这个需求的都能搞定。
打开cron编辑器:

$ crontab -e

在最底部添加上面的脚本:

0 2 * * * /usr/local/applications/mysql_dump_bak.sh

这行的意思是在每天的凌晨2点执行一次备份脚本。
然后保存cron配置就行了,一切已经就绪。

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……