Windows服务器计划任务,自动备份网站数据库

网站数据库如果只靠手动备份,时间一长很容易忘记,一旦服务器出问题,数据恢复就会变得非常被动。
在Windows服务器上,利用系统自带的任务计划程序配合一个备份脚本,就能实现每天定时自动备份网站数据库,不需要额外安装软件,也不需要一直开着远程桌面。
下面按零基础也能照着做的顺序,把整个流程拆开讲清楚。

先确认备份环境是否就绪

动手之前,先确认服务器上已经具备这几个条件,否则后面创建的任务会执行失败。

  • 数据库客户端可用:如果是MySQL或MariaDB,服务器上需要能找到 mysqldump.exe。常见路径是 C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump.exe,具体以实际安装目录为准。
  • 备份目录已创建:提前建好一个专门存放备份文件的文件夹,例如 D:\backup\mysql,避免备份文件散落在系统盘。
  • 数据库账号权限足够:用于备份的账号至少要有对应数据库的查询和导出权限,不要直接使用root账号长期跑任务,建议单独建一个备份专用账号。
  • 磁盘空间充足:数据库备份文件会持续增长,建议定期清理旧文件,或在脚本里加入自动删除过期备份的逻辑。

编写数据库备份脚本

自动备份的核心是一个能独立运行的批处理脚本。
新建一个文本文件,把扩展名改成 .bat,例如 D:\backup\backup_db.bat,内容参考下面这段:

@echo off
setlocal

:: 设置日期变量,格式为 20250101
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set today=%year%%month%%day%

:: 设置数据库连接信息
set db_user=backup_user
set db_pass=你的密码
set db_name=wordpress
set db_host=127.0.0.1

:: 设置备份存放目录
set backup_dir=D:\backup\mysql

:: 执行备份,文件名带上日期
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump.exe" -u%db_user% -p%db_pass% -h%db_host% --single-transaction --routines --triggers %db_name% > "%backup_dir%\%db_name%_%today%.sql"

:: 删除7天前的备份文件(按需调整)
forfiles /p "%backup_dir%" /m *.sql /d -7 /c "cmd /c del @path"

endlocal

几个关键点需要留意:

  • --single-transaction 适合InnoDB引擎,可以在不锁表的情况下导出数据,减少对网站访问的影响。
  • --routines --triggers 会把存储过程和触发器一起备份,如果数据库里没有这些对象,去掉也不影响。
  • 密码直接写在脚本里存在泄露风险,更稳妥的做法是使用MySQL的 --defaults-extra-file 参数读取单独的配置文件,把账号密码从脚本中分离出去。

写好后双击运行一次脚本,去 D:\backup\mysql 目录下看是否生成了 .sql 文件。
如果文件大小正常且不是0字节,说明脚本本身没问题,可以进入下一步。

用任务计划程序创建定时任务

脚本能手动跑通后,把它交给Windows任务计划程序托管。

  1. Win + R,输入 taskschd.msc 回车,打开任务计划程序。
  2. 在右侧操作栏点击“创建任务”,不要选“创建基本任务”,因为基本任务缺少一些关键选项。
  3. 在“常规”选项卡中填写名称,例如“网站数据库自动备份”。勾选“不管用户是否登录都要运行”,这样服务器锁屏或无人登录时任务照样执行。同时勾选“使用最高权限运行”。
  4. 切换到“触发器”选项卡,点击“新建”。在“开始任务”下拉框选择“按预定计划”,设置每天凌晨3点执行一次,避免和网站访问高峰重叠。
  5. 进入“操作”选项卡,点击“新建”。操作选择“启动程序”,程序或脚本填写 D:\backup\backup_db.bat,起始于填写 D:\backup
  6. 在“条件”选项卡中,取消勾选“只有在计算机使用交流电源时才启动此任务”,防止笔记本或UPS环境误判。
  7. 点击确定保存,系统会要求输入运行任务的账号密码,输入当前管理员账号即可。

任务创建完成后,在任务列表中找到它,右键选择“运行”,观察上次运行结果是否显示成功。

容易踩坑的几个地方

即使步骤都对,实际执行时仍可能遇到问题,下面这些是高频故障点。

  • 任务显示已运行但备份文件没生成:多半是脚本路径没写绝对路径,或者“起始于”留空导致相对路径找不到。把bat里所有路径都写成完整路径,起始于填脚本所在目录。
  • 提示“mysqldump不是内部或外部命令”:任务计划执行时的环境变量和手动打开CMD不一样,脚本里必须用 mysqldump.exe 的完整路径,不能只写命令名。
  • 备份文件大小为0:通常是数据库账号密码错误、数据库名不存在,或者账号没有导出权限。可以临时在脚本末尾加 pause,手动运行看具体报错。
  • 中文路径或数据库名导致失败:Windows任务计划对中文支持不稳定,备份目录和脚本路径尽量使用英文和数字,不要用中文或空格。
  • 备份文件无限堆积:脚本里加上 forfiles 删除旧文件的逻辑,或者单独写一个清理任务,否则磁盘迟早被占满。

怎么确认备份真的有效

任务状态显示成功,不代表备份文件一定能用。
建议每个月至少做一次恢复演练。

  • 打开备份目录,确认当天生成的 .sql 文件大小和前几天接近,没有突然变小。
  • 在测试环境或临时数据库里,用 mysql -u用户名 -p 数据库名 < 备份文件.sql 导入一次,看能否正常恢复。
  • 查看任务计划程序的“上次运行结果”,代码 0x0 表示成功,其他代码可以结合具体报错去排查。
  • 如果服务器有多块磁盘,备份文件不要和数据库文件放在同一个盘,避免磁盘故障时一起丢失。

常见疑问

备份任务需要每天执行吗?

取决于网站更新频率。
内容更新频繁的站点建议每天一次,展示型站点可以两三天一次。
备份频率越高,占用的磁盘空间也越多,需要结合实际情况权衡。

能不能同时备份多个数据库?

可以。
在bat脚本里把mysqldump那一行复制多份,分别修改 db_name 变量,或者用 for 循环遍历数据库列表。
每个数据库生成独立文件,方便单独恢复。

任务计划程序提示密码过期怎么办?

如果运行任务的账号设置了密码过期策略,任务会突然停止。
建议给任务使用一个密码永不过期的专用账号,或者在服务器本地安全策略里调整该账号的密码策略。

备份文件要不要传到别的地方?

本地备份只能防误删和逻辑错误,防不了服务器硬件损坏。
重要数据建议再同步一份到另一台机器或对象存储,可以用脚本配合 robocopy 或云存储客户端实现。

按上面的流程走完,Windows服务器计划任务自动备份网站数据库这件事就算落地了。
第一次配置完,记得手动触发一次任务,去备份目录确认文件真实生成,再做一次恢复测试,确认没问题之后就可以放心让它每天自己跑了。

分享到:
上一篇
Windows Server IIS部署WordPress详
下一篇
Docker Compose一键部署WordPress站点
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意