news 2026/9/28 20:13:57

linux定时备份mysql数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux定时备份mysql数据库

新建文件 mysql_backup.sh,将文件放到home目录下(具体位置可以自己选择),文件内容如下:

#!/bin/bash #备份目录 BACKUP=/mnt/mysql_backup #当前时间 DATETIME=$(date +%Y-%m-%d_%H%M%S) #数据库地址 视情况而定,如果是在数据库服务器备份到自己服务器,可以不要HOST #HOST=localhost #数据库用户名 DB_USER=root #数据库密码 DB_PW=123456 #备份的数据库名称 DATABASE=db_test echo "开始备份数据库${DATABASE},当前时间${DATETIME}" #创建备份目录,如果不存在就创建 [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}" #备份数据库 --host可以不要,如果是本分到本服务器 /mysql/MySQL5.7.28/bin/mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz cd ${BACKUP} #将日期文件夹打包压缩,处理成tar.gz tar -zcvf $DATETIME.tar.gz ${DATETIME} #删除原日期文件夹 rm -rf ${BACKUP}/${DATETIME} #删除N天前的备份文件 find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "备份数据库${DATABASE}完成"

根据实际情况修改相关的参数值。

将文件上传至数据库服务器,为文件添加执行权限:

chmod u+x /home/mysql_backup.sh

如果在服务器上执行脚本报错,可能是因为文件中换行符的问题,解决方法是把文件上传到linux服务器后,进入到脚本所在的目录下面,执行下面的命令,把换行符换成linux的,而不是windows的。

# 进入脚本所在目录

cd /xxx

# 使用sed命令移除Windows换行符

sed -i 's/\r$//' mysql_backup.sh

利用crond服务定时执行备份脚本,crond的常用命令:

crontab -e 编辑crontab定时任务

crontab -l 查询crontab任务

crontab -r 删除当前用户所有的crontab任务(终止任务调度)

service crond restart 重启任务调动,一般在设置完成后重启

例如,每日凌晨5点执行数据库备份,则crond服务的配置如下:

crontab -e 打开编辑窗口

0 5 * * * /home/mysql_backup.sh 设置定时执行参数

cron表达式中5个占位符的说明:

特殊符号说明:

特殊时间执行案例:

docker部署的MySQL,做数据备份

#!/bin/bash # 备份目录 BACKUP=/opt/mysql_backup # 当前时间 DATETIME=$(date +%Y-%m-%d_%H%M%S) # Docker 容器名称 DOCKER_NAME=mysql8 # 数据库用户名 DB_USER=root # 数据库密码(如果有特殊字符建议用环境变量或配置文件) DB_PW='123456' # 备份的数据库名称 DATABASE=sales_report echo "开始备份数据库 ${DATABASE},当前时间 ${DATETIME}" # 创建备份目录 [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}" # ========== 使用 docker exec 执行 mysqldump docker exec ${DOCKER_NAME} mysqldump -u${DB_USER} -p${DB_PW} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/${DATETIME}.sql.gz cd ${BACKUP} # 打包压缩 tar -zcvf ${DATETIME}.tar.gz ${DATETIME} # 删除原文件夹 rm -rf ${BACKUP}/${DATETIME} # 删除 10 天前的备份 find ${BACKUP} -mtime +10 -name "*.tar.gz" -delete echo "备份数据库 ${DATABASE} 完成,文件:${DATETIME}.tar.gz"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 20:13:39

2026数据可视化校招JD复盘:ECharts、SQL、Three.js的权重变化

2026年数据可视化校招的核心要求集中在三个方向:前端可视化框架(Vue3 ECharts为最常见组合)、数据层能力(SQL Python)、以及业务交互设计(钻取/联动/筛选)。以下基于2026年校招JD和面经逐条展…

作者头像 李华
网站建设 2026/9/28 20:13:18

PrismML 9倍压缩27B本地模型:本地部署与量化实战指南

1. 本期核心:PrismML 9倍压缩27B本地模型1.1 9倍压缩到底压掉了什么这期的衍辉AI速递里,PrismML那条消息是真的让我多看了两眼:一个27B参数的本地模型,官方声称可以做到9倍压缩。什么意思呢?常跑模型的朋友都清楚&…

作者头像 李华
网站建设 2026/9/28 20:10:38

Qwen Code调度编程助手:多代理工作流的架构与落地

最近我在重构一个有点年头的老项目,手边同时开着好几个编程助手。Cline在补测试,Cursor在折腾那个特别绕的状态管理模块,我自己在写接口文档。干到一半我突然冒出个挺反直觉的念头:既然我已经在同时用这么多AI工具,那为…

作者头像 李华