Linux环境下定时备份mysql数据库

首先新建一个脚本

vi db_backup.sh

把脚本内容写进去

#!/bin/bash
mysqldump -uroot -p123456 dbname> /home/backup/dbname_$(date +%Y%m%d_%H%M%S).sql

如果需要压缩,则这样写

#!/bin/bash
mysqldump -uroot -p123456 dbname| gzip > /home/backup/dbname_$(date +%Y%m%d_%H%M%S).sql.gz

保存。其中root、123456、dbname分别是数据库用户、密码、数据库名,/home/backup 是备份路径

添加执行权限

chmod 755 db_backup.sh

然后执行一下脚本,看是否报错。

./db_backup.sh

如果出现下面这样的错误:

mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)
则应该是mysql server与mysql client的版本不一致。

我本地的解决方法是重新安装mysql client,使其与server的版本一致。

具体安装步骤请查看我的另两篇文章:mysql5.5 for linux 安装 和 Linux环境安装mysql 5.6注意事项

安装完成后重新测试上面的备份脚本能够正常运行。


下面我们需要把脚本放到crontab里面定时运行。

crontab -e 进行编辑(类型vi模式)

*/1 * * * * /home/backup/db_backup.sh
上面脚本意思是每1分钟执行一次备份脚本。

保存,然后启动crontab

/sbin/service crond start
crontab还有其他的命令:

service crond stop    //关闭服务
service crond restart  //重启服务
service crond reload   //重新载入配置
service crond status   //查看服务状态 
crontab -l //查看当前用户的crontab
crontab -e //编辑crontab
crontab -r //删除crontab

然后等一分钟看看是否在备份目录中有备份文件生成,如果有则表示脚本没有问题。

然后可以把crontab 的定时时间改为你所需要的时间,比如每天24点备份。

crontab的命令格式:

minute hour day month week command

如果有/,则表示轮询,隔多久运行一次,没有的话就表示定时,在某刻运行。

如:

*/5 * * * * 表示每5分钟运行一次

5 * * * * 表示每个小时的第5分钟运行

0 20 * * * * 每天20点运行

0 */3 * * * * 每隔3小时运行一次

其他的自行搜索吧,今天就到这。





你可能感兴趣的:(mysql)