crontab定时备份数据库
Posted 风吹头蛋凉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crontab定时备份数据库相关的知识,希望对你有一定的参考价值。
为什么要备份数据库?
- 保证数据的可恢复性
- 防患于未然
- 提升系统安全性
接下来就教大家如何通过crontab定时备份数据库
认识crontab
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务
使用crontab
- 首先创建一个bash 文件
mkdir back.sh
- 编写 back.sh
#!/bin/bash
time=`date +%Y%m%d`
###################数据库配置信息#######################
user=数据库用户名
passwd=数据库密码
dbname=数据库名字
mysql_back_path=备份的数据文件存放地址
###################数据库配置信息#######################
mysqldump -u $user -p$passwd $dbname > $mysql_back_path/$time.sql
写好.bash.sh之后,可以用shell命令执行以下,如果没问题的话,再去使用定时命令
注意可能出现Warning: Using a password on the command line interface can be insecure
解决步骤:
- 修改etc/my.cnf 增加如下代码 ,此时备份数据会使用如下账号
[client]
host=localhost
user=root
password=123456
编写crontab定时任务
crontab -e
*/1 * * * * /bin/sh /www/back.sh
以上是每分钟备份的写法,具体可网上搜索crontab配置具体配置
等到定时任务执行,然后就可以看到生成的sql文件了,但是有时候会出现产生sql文件,但是文件无内容,空白,这是因为脚本执行mysqldump时,没有找到命令,这个时候就需要我们在脚本里指定命令路径。如下:
查询命令位置 whereis php
/usr/local/Cellar/mysql/5.7.22/bin/mysqldump -u u s e r − p user -p user−ppasswd $dbname > m y s q l b a c k p a t h / mysql_back_path/ mysqlbackpath/time.sql
查询执行日志
tail -f /var/log/cron //查看最新的日志
tail -100 /var/log/cron //查看最新的100条日志
以上是关于crontab定时备份数据库的主要内容,如果未能解决你的问题,请参考以下文章