首先新建一个脚本
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小时运行一次
其他的自行搜索吧,今天就到这。