Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to realize automatic backup of mysql database every day in production environment

2025-01-16 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)05/31 Report--

这篇文章给大家介绍怎样在生产环境下实现每天自动备份mysql数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1、描述

我相信很多朋友在工作都都会有这种需求,老板或领导让你每天都要备份mysql数据库,你该如何实现呢,是每天到一定的时间在服务器上敲一遍mysql的备份命令,还是想写个脚本,定时定点的自动备份呢?我相信大家都想让它自动备份,接下来我通"shell脚本+定时任务"的方式来实现自动备份mysql数据库。

2、环境

备份路径:/data/mysqlbak/

备份脚本:/data/mysqlbak/mysqlbak.sh

备份时间:每天23:59备份

备份要求:比如备份的数据只保留1周

3、mysqlbak.sh脚本

#!/bin/bash#数据库IPdbserver='127.0.0.1'#数据库用户名dbuser='root'#数据密码dbpasswd='********'#数据库,如有多个库用空格分开dbname='back01'#备份时间backtime=`date +%Y%m%d`#备份输出日志路径logpath='/data/mysqlbak/'echo "################## ${backtime} #############################" echo "开始备份" #日志记录头部echo "" >> ${logpath}/mysqlback.logecho "-------------------------------------------------" >> ${logpath}/mysqlback.logecho "备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/mysqlback.log#正式备份数据库for table in $dbname; dosource=`mysqldump -h ${dbserver} -u ${dbuser} -p${dbpasswd} ${table} > ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqlback.log;#备份成功以下操作if [ "$?" == 0 ];thencd $datapath#为节约硬盘空间,将数据库压缩tar zcf ${table}${backtime}.tar.gz ${backtime}.sql > /dev/null#删除原始文件,只留压缩后文件rm -f ${datapath}/${backtime}.sql#删除七天前备份,也就是只保存7天内的备份find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqlback.logelse#备份失败则进行以下操作echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqlback.logfidoneecho "完成备份"echo "################## ${backtime} #############################"

脚本写好了,你要记得为脚本加上执行权限:

#chmod +x /data/mysqlbak/mysqlbak.sh

4、配置定时任务执行脚本

#crontab -e59 23 * * * /data/mysqlbak/mysqlbak.sh

参数说明:

格式为 :分 时 日 月 周 命令

59 23 * * * :每天23:59分自动执行脚本

M: 分钟(0-59)。每分钟用*或者 */1表示

H:小时(0-23)。(0表示0点)

D:天(1-31)。

m: 月(1-12)。

d: 一星期内的天(0~6,0为星期天)。

提示:最好你先执行一下脚本能不能跑通,然后在写到crontab中,等执行完了,进入/data/mysqlbak/目录查看一下有没有备份文件,如果有,则表示脚本执行成功,记得不要搞错了备份的用户和密码。

关于怎样在生产环境下实现每天自动备份mysql数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Database

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report