宝塔面板:计划清单自定义脚本问题解决
本文最后更新于53 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

新手教程:在宝塔面板用 Docker 自动备份 MySQL 全库

本教程面向新手小白,详细教你如何在宝塔面板环境下,为 Docker MySQL 容器设置每日自动备份。每一步都有操作命令和注意事项,按步骤执行即可。


步骤 0:准备工作

  • 确保服务器已经安装 Docker 并有运行中的 MySQL 容器。
  • 可以通过 SSH 登录服务器,推荐用 root 用户。
  • 确认宝塔面板已安装并能使用“计划任务”。

步骤 1:确认 Docker 容器名称

在服务器 SSH 终端执行以下命令查看所有容器:

docker ps --format "table {{.Names}}\t{{.Status}}"

输出类似:

NAMES                               STATUS
mysql_hmdd-mysql_hMdd-1               Up 5 days
wordpress_abc-wordpress_abc-1         Up 5 days

注意:复制完整容器名(区分大小写),例如 mysql_hmdd-mysql_hMdd-1

步骤 2:创建备份目录

在服务器上创建一个目录存放备份文件:

mkdir -p /www/backup/database

如果目录已经存在可跳过。

步骤 3:创建备份脚本

在服务器上创建脚本文件:

nano /www/backup/database/mysql_backup.sh

将以下内容完整粘贴进去:

#!/bin/sh

BACKUP_DIR="/www/backup/database"
CONTAINER_NAME="mysql_hmdd-mysql_hMdd-1"
DOCKER_BIN="/usr/bin/docker"
DB_PASSWORD="AjMB68eShLttXNBL"

mkdir -p "$BACKUP_DIR"
DATE=$(date +%Y%m%d_%H%M%S)
FILE_NAME="docker_full_backup_$DATE.sql.gz"
ERROR_LOG="$BACKUP_DIR/mysqldump_error.log"

echo "------------------------------------------------"
echo "开始执行 MySQL Docker 全库备份:$(date)"

$DOCKER_BIN exec "$CONTAINER_NAME" mysqldump -u root -p"$DB_PASSWORD" --protocol=socket --single-transaction --quick --all-databases > "$BACKUP_DIR/tmp.sql" 2> "$ERROR_LOG"

if [ $? -ne 0 ]; then
    echo "❌ 备份失败:"
    cat "$ERROR_LOG"
    rm -f "$BACKUP_DIR/tmp.sql"
    exit 1
fi

gzip -f "$BACKUP_DIR/tmp.sql"
mv "$BACKUP_DIR/tmp.sql.gz" "$BACKUP_DIR/$FILE_NAME"

if [ ! -s "$BACKUP_DIR/$FILE_NAME" ]; then
    echo "❌ 备份失败:生成文件为空"
    exit 1
fi

SIZE=$(du -h "$BACKUP_DIR/$FILE_NAME" | cut -f1)
echo "✅ 备份成功:$SIZE"
echo "文件路径:$BACKUP_DIR/$FILE_NAME"

find "$BACKUP_DIR" -mtime +7 -name "docker_full_backup_*.sql.gz" -delete
echo "🧹 已清理 7 天前旧备份"
echo "------------------------------------------------"

保存并退出:Ctrl+O → 回车 → Ctrl+X

步骤 4:给予脚本执行权限

chmod +x /www/backup/database/mysql_backup.sh

步骤 5:测试脚本是否可执行

/bin/sh /www/backup/database/mysql_backup.sh

正常运行会看到类似输出:

------------------------------------------------
开始执行 MySQL Docker 全库备份:2026-02-05 17:55:34
✅ 备份成功:1.3M
文件路径:/www/backup/database/docker_full_backup_20260205_175534.sql.gz
🧹 已清理 7 天前旧备份
------------------------------------------------

步骤 6:在宝塔面板设置计划任务

  • 登录宝塔 → 计划任务 → 添加任务
  • 类型选择:Shell 脚本
  • 命令填写:
    /bin/sh /www/backup/database/mysql_backup.sh
  • 执行周期:每日凌晨或业务低峰期
  • 保存任务

步骤 7:优化建议

  • 隐藏数据库密码:在 /root/.my.cnf 配置登录凭证,脚本中不再明文出现密码。
  • 完整备份:结合网站文件目录打包,实现数据库 + 文件的整机自动备份。

总结

按照本教程,小白也能轻松完成 Docker MySQL 自动全库备份,并通过宝塔计划任务每天执行。备份文件自动压缩、保留 7 天历史、清理旧文件,真正实现一键灾备。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇