🔧 适用于:MySQL 5.7(其他版本需测试)
🧱 技术栈:Docker + Xtrabackup + Shell 脚本
🔍 项目背景
宝塔面板内置了【数据库差异备份】功能,但仅专业版可用。本项目旨在使用 开源免费工具 + Docker 模拟出同等效果甚至更强的差异备份能力,完全绕过宝塔付费限制,让你白嫖得明明白白!
✅ 实现效果
-
⏳ 支持 自动判断全量 or 增量备份
-
♻️ 支持 备份数据合并与还原
-
🔁 支持 定时任务全自动执行
-
🚫 无需宝塔授权,不用花钱!
📋 前置要求
条件 | 说明 |
---|---|
✅ 已安装 Docker | 系统需支持 Docker,建议 Ubuntu / Debian |
🔧 系统资源 | 建议 2核 2G 内存以上 |
⚠️ 数据库版本 | 当前支持 MySQL 5.7(Xtrabackup 2.4) |
🧩 是否安装宝塔 | 非必需,如无宝塔需自行配置路径 |
🛠 配置项说明(修改脚本前请注意)
MYSQL_USER="root" # 数据库用户名(建议 root)
MYSQL_PASSWORD="yourpassword" # 数据库密码
BACKUP_DIR="/backup" # 所有备份统一放这里
FULL_BACKUP_INTERVAL=7 # 每 N 天执行一次全量备份
XTRABACKUP_IMAGE="percona/percona-xtrabackup:2.4"
MYSQL_DATA_DIR="/www/server/data" # MySQL 数据目录(宝塔默认)
📦 核心功能模块
1️⃣ 自动备份调度逻辑
-
✅ 每次运行自动判断是否进行“全量”或“增量”备份
-
✅ 每次备份自动记录并命名为时间戳文件夹
2️⃣ 备份脚本自动执行命令
# 添加执行权限
chmod +x /path/to/backup_script.sh
# 添加定时任务(每天凌晨2点执行)
crontab -e
0 2 * * * /path/to/backup_script.sh
3️⃣ 备份恢复命令示例
# 准备包含多个增量的恢复目录(顺序传入)
prepare_backup "$FULL_BACKUP_DIR/20250502120000"
"$INCREMENTAL_BACKUP_DIR/20250503120000"
"$INCREMENTAL_BACKUP_DIR/20250504120000"
# 恢复数据库(此操作会停止 MySQL 并清空数据目录)
restore_backup "$FULL_BACKUP_DIR/20250502120000"
📜 脚本核心逻辑结构(简要)
-
判断是否存在上次全量备份
-
若无则执行首次全量备份
-
若存在则判断距离是否超出
FULL_BACKUP_INTERVAL
-
超期 => 再次全量备份 | 否则 => 增量备份
-
使用 Docker 启动
xtrabackup
容器进行数据拷贝
💡 提示与建议
-
如非宝塔环境,需修改
MYSQL_DATA_DIR
与MYSQL_CONFIG_FILE
等默认路径 -
建议每周进行一次 人工全量备份测试
-
可配合 rclone 将备份同步到阿里云盘 / Google Drive
📁 下载 / 参考地址
我用夸克网盘分享了「xtrabackup-docker差量备份MySQL.sh」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。
链接:https://pan.quark.cn/s/4ad869d0359c
⚠️ 免责声明
此脚本仅用于学习研究用途,严禁用于非法用途。请勿在生产环境中部署未经测试的备份与恢复逻辑!
© 版权声明
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,本站是非经营性网站,内容来源于互联网,如果有侵权内容、不妥之处,请第一时间联系 linrran@qq.com 删除处理,敬请谅解!
THE END
暂无评论内容