:定时全量备份)
目录一、数据库实例信息1.1 功能目的1.2 界面与操作1.3 数据存储二、任务调度2.1 功能目的2.2 界面与操作2.3 调度策略cron 表达式2.4 数据存储与 crontab 联动2.5 使用流程小结三、镜像构建与部署运行3.1 优先方式直接拉取已发布镜像3.2 如需自行构建镜像3.3 挂载说明3.4 运行服务本地构建镜像方式《 MySQL备份工具分享一 可视化备份与还原》《 MySQL备份工具分享二 增量备份》《 MySQL备份工具分享三 定时全量备份》《 MySQL备份工具分享四 定时增量备份》在前两篇分享中我们介绍了全量备份、增量备份以及通过 Web 界面进行备份与恢复的操作。本篇介绍本阶段新增的两个能力数据库实例信息与任务调度。前者用于集中管理多套数据库连接配置在操作备份与还原时无需再重复填写数据库的连接信息。任务调度则用于基于这些实例配置定时全量备份任务增量定时备份还在开发中由系统 crontab 按 cron 表达式自动执行。注意因为工具内涉及到的都是数据库相关敏感信息与数据所以建议该工具在内网安全环境使用以防数据库连接信息与备份数据泄露。后续会逐步开发相关安全校验功能支持的docker镜像版本为26.1.8# 从 Docker Hub 拉取dockerpull codeyunze/db-backup-management:latest# 或dockerpull codeyunze/db-backup-management:26.1.8# 从阿里云 ACR 拉取国内网络更友好dockerpull registry.cn-guangzhou.aliyuncs.com/devyunze/db-backup-management:latest# 或dockerpull registry.cn-guangzhou.aliyuncs.com/devyunze/db-backup-management:26.1.8一、数据库实例信息1.1 功能目的统一管理连接配置将常用的数据库连接主机、端口、用户名、密码、数据库名保存为一条条“实例”并为之命名如mall-dev、mall-prod、XXX测试环境数据库等。复用与快速填充在“数据备份”模块中可从下拉框选择某条实例自动带出主机、端口、用户名、密码、数据库名无需每次手输。与任务调度联动每条实例下可挂载多条“定时任务”删除实例前需先清理其下所有定时任务。实例信息仅用于连接与参数填充不包含备份策略如是否 gzip、表过滤、清理天数等这些策略在“数据备份”中按次填写或在“任务调度”中按任务配置。1.2 界面与操作列表展示已保存的实例列包括名称、主机、端口、数据库、用户名列表中不展示密码。新增点击头部“新增”按钮在弹窗中填写实例名称、数据库主机、端口、用户名、密码、数据库名保存后写入backup-plans.json。编辑点击某行的“编辑”在弹窗中修改上述字段。测试连接点击“测试连接”用该实例当前保存的连接参数请求后端/db/test-connection用于确认网络与账号可用测试时会拉取含密码的完整实例信息再发起请求。删除点击“删除”时若该实例下存在定时任务会提示“该实例下仍存在定时任务请先在任务调度中清理完定时任务后再删除实例信息”并禁止删除无任务时方可删除。1.3 数据存储文件与备份元数据同目录下的backup-plans.json默认路径由BACKUP_ROOT决定如/data/backup/mysql/backup-plans.json。结构根节点为数组每项为一条“计划”对应一条数据库实例信息例如{id:plan_1773382601991,name:mall-dev,host:127.0.0.1,port:3306,user:root,password:***,database:mall,backup_dir:/data/backup/mysql,jobs:[]}说明id由系统生成用于前后端与“任务调度”关联jobs为该实例下的定时任务列表见下文。二、任务调度2.1 功能目的定时全量备份选择一条已保存的“数据库实例”配置备份类型当前为全量、表过滤、清理策略、是否 gzip、以及cron 表达式保存为一条“调度任务”。运行 / 停止任务可处于“运行”或“停止”状态。运行状态下系统会将对应命令写入 crontab到点自动执行备份脚本停止则从 crontab 中移除不再触发。与“数据备份”分离“数据备份”模块只做“立即执行一次备份”不包含调度任务名称、cron 等所有定时相关配置均在“任务调度”中完成。2.2 界面与操作列表表格列包括任务名称、实例名称、备份类型、调度策略cron 表达式、上次执行时间、下次执行时间、状态运行/停止、操作。当状态为“运行”时会根据 cron 表达式计算并展示“下次执行时间”操作列显示“停止”“日志”。当状态为“停止”时操作列显示“编辑”“日志”“运行”“删除”。新增点击“新增”在弹窗中选择“数据库实例信息”必选选择后会展示该实例的当前实例信息两行实例名称/主机/端口用户名/数据库/备份目录选择备份类型全量/增量当前调度仅使用全量勾选是否“启用 gzip 压缩”默认勾选填写“调度任务名称”、“调度策略cron 表达式”界面会展示最近 5 次预计执行时间可选填写“仅备份指定表”、“不备份的表”、“清理旧备份天”保存后创建一条处于“停止”状态的任务需再点击“运行”才会写入 crontab 并开始按点执行。编辑仅当任务为“停止”时可编辑点击“编辑”打开与新增相同的弹窗可修改任务名称、调度策略、表过滤、清理天数、gzip、以及所属数据库实例切换实例相当于“迁移”任务在新实例下创建新任务并删除原任务。运行 / 停止运行即把该任务加入 crontab停止即从 crontab 移除。运行中不可编辑、不可删除。日志点击“日志”弹窗展示该任务的合并日志元事件日志 脚本输出日志便于排查定时执行情况。删除仅“停止”状态下可删除删除后从backup-plans.json中移除该 job并从 crontab 中移除对应行若曾在运行状态则先停止再删。2.3 调度策略cron 表达式格式标准 5 段 cron分 时 日 月 周如0 1 * * *表示每天 1 点 0 分执行。预览在新增/编辑弹窗中填写调度策略后会实时计算并显示“最近 5 次预计运行时间”便于确认是否符合预期。2.4 数据存储与 crontab 联动存储每条调度任务作为对应实例下的一个job对象保存在backup-plans.json的plans[].jobs[]中例如{id:job_1773394757637,name:每天凌晨1点全量备份mall数据库,schedule:0 1 * * *,backup_type:full,tables:,ignore_tables:,clean_days:0,enable_gzip:true,enabled:true,created_at:2026-03-13 17:39:17}运行态当某条任务的enabled为true时后端会在jobs/目录下生成可执行脚本{job_id}.sh内容为带完整参数的mysql-backup-schema-data.sh调用主机、端口、用户、密码、库名、表过滤、清理天数、是否 gzip 等在系统 crontab 中写入一行按schedule执行该脚本脚本执行时会将“调度触发”等元事件写入job-logs/{job_id}.log将备份脚本的标准输出写入job-logs/{job_id}.run.log。停止态enabled为false或任务被删除时从 crontab 中移除对应行不再触发。2.5 使用流程小结在“数据库实例信息”中新增并保存至少一条实例名称、主机、端口、用户、密码、数据库名。在“任务调度”中点击“新增”选择该实例填写任务名称、cron、表过滤与清理策略等保存此时任务为“停止”。在任务列表中对该任务点击“运行”系统写入 crontab到点自动执行全量备份。需要暂停时点击“停止”需要修改时先停止再编辑可通过“日志”查看每次触发的记录与脚本输出。三、镜像构建与部署运行3.1 优先方式直接拉取已发布镜像推荐直接使用已发布的多架构镜像同时支持 amd64 / arm64无需本地构建# 从 Docker Hub 拉取dockerpull codeyunze/db-backup-management:latest# 从阿里云 ACR 拉取国内网络更友好dockerpull registry.cn-guangzhou.aliyuncs.com/devyunze/db-backup-management:latest运行服务示例任选其一镜像地址dockerrun-d-p8081:8081\-v/宿主机/备份目录:/data/backup/mysql\--namedb-backup\codeyunze/db-backup-management:latest启动后访问http://localhost:8081/即可使用 Web 可视化管理界面。3.2 如需自行构建镜像该工具也支持本地构建 Docker 镜像内置 mysql、mysqldump 和 Python3方便在任何环境中快速部署拉取代码到本地代码地址: https://github.com/codeyunze/db-backup-management.gitcddb-backup-managementdockerbuild-tdb-backup-management:latest.若官方源出现502可使用国内镜像构建# 阿里云镜像dockerbuild --build-argAPT_MIRRORaliyun-tdb-backup-management:latest.# 清华镜像dockerbuild --build-argAPT_MIRRORtsinghua-tdb-backup-management:latest.3.3 挂载说明容器路径说明/data/backup/mysql备份文件存储目录建议挂载宿主机目录持久化3.4 运行服务本地构建镜像方式如果选择本地构建镜像可使用以下命令运行服务dockerrun-d-p8081:8081\-v/宿主机/备份目录:/data/backup/mysql\--namedb-backup\db-backup-management:latest启动后访问http://localhost:8081/即可使用 Web 可视化管理界面。以上即为本阶段“数据库实例信息”与“任务调度”的分享内容后续若增加增量任务的定时调度或更多策略会在此基础上扩展。