Linux下crontab定时备份mysql数据库

tech2023-07-19  101

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/,该网站目前还在更新,常见的表达式里面可以自己生成。
最新回复(0)