Linux下crontab定时备份mysql数据库
1、创建文件夹保存备份的sql文件2、添加备份脚本3、修改mysql配置文件4、通过crontab添加定时任务执行脚本5、验证是否定时备份6、资料补充
1、创建文件夹保存备份的sql文件
#任意切换一个目录下(我这里是根目录下)
cd /
#创建存储目录
mkdir backup
2、添加备份脚本
#创建脚本文件
vim backupdb.sh
#在脚本文件里面添加这三行配置
db_name="xxx" #数据库名称
name="$db_name-$(date +"%Y-%m-%d %H:%M:%S")" #生成备份文件的名称(包含数据库名和日期)
/usr/local/mysql/bin/mysqldump $db_name >> /backup/$name.sql #生成备份sql文件
3、修改mysql配置文件
#编辑my.cnf文件(方便数据库备份时自动填入用户名密码)
vim /etc/my.cnf
#添加如下配置
[mysqldump]
user=xxx #数据库用户
password=xxx #数据库密码
#添加完成记得重启mysql服务
service mysqld restart(或者 service mysql restart ,视版本而定)
4、通过crontab添加定时任务执行脚本
#编辑定时任务
crontab -e
#添加如下配置
*/1 * * * * /bin/sh /backupdb.sh #每一分钟执行备份任务
5、验证是否定时备份
#查看定时任务执行纪录
vim /var/log/cron
#滑动到最后一行,如果出现如下所示的错误:
(root) MAIL (mailed 130 bytes of output but got status 0x007f#012)
出现这个错误有很大可能是路径没有写上全路径,请确保正确:(/usr/local/mysql/bin/mysqldump $db_name >> /backup/$name.sql)、(*/1 * * * * /bin/sh /backupdb.sh)
#如果出现如下所示的错误:
(root) MAIL (mailed 192 bytes of output but got status 0x004b#012)
出现这个错误是执行脚本权限问题,进行以下操作:
chmod u+x backupdb.sh
#切换到备份目录(cd /backup),执行命令(ls -lh)查看所有备份文件大小,大小不是0的话说明已经备份成功。
6、资料补充
推荐一个crontab表达式的网站:https://tool.lu/crontab/,该网站目前还在更新,常见的表达式里面可以自己生成。