Windows下怎么实现MySQL数据库定时自动备份

问题

公司业务数据库跑在 Windows Server 的 MySQL 上,数据每天在变,现在靠人工偶尔导出一次,既不规律也没留几个版本。想做成定时自动备份:每天夜里自动导出、保留最近一段时间、失败了有人知道——在 Windows 环境下应该怎么搭?

问题补充

理想状态是零人工参与:备份、压缩、轮转、校验一条龙,恢复的时候拿着最近的备份文件就能快速把库拉回来。

原因

  1. MySQL 本身只提供备份工具(mysqldump 等),不带调度;「定时」要靠操作系统的计划任务或第三方调度器。
  2. 人工导出容易漏、备份文件堆在服务器本地——磁盘一起坏或服务器被勒索时,本地备份与数据同归于尽。
  3. 没有校验环节的备份是盲盒:文件存在不等于能恢复,很多事故出在恢复时才发现备份是坏的。

解决

  1. 写一个备份批处理。核心一行:mysqldump -u backup_user -p密码 --single-transaction --databases db1 db2 > D:\backup\db_%date:~0,10%.sql。--single-transaction 保证 InnoDB 表导出时的一致性,业务不用停;账号单独建一个只有读取和锁定表权限的 backup_user,别用 root 跑备份。
  2. 挂进任务计划程序。Windows 任务计划程序里新建任务,触发器设每天凌晨低峰时间,操作指向这个批处理;「起始于」字段要填工作目录,否则 dump 文件会落到系统目录里找不到。
  3. 加压缩与轮转。批处理里用 tar/7z 把 SQL 文件压缩归档,再配一段简单脚本删除 N 天前的旧备份,保留策略按「最近 7 天每日+最近 8 周每周」这类节奏定,空间和版本数兼顾。
  4. 加校验与异地拷贝。任务完成后检查 dump 文件行数或文件大小是否在正常区间,异常就往管理员邮箱发一封通知;再把备份目录同步一份到另一台机器或 NAS——备份离开原服务器,才算真正有了保险。
  5. 定期演练恢复。每季度拿最近的备份在测试库上真恢复一次,mysql -u root -p < xxx.sql 跑通、数据抽查正常,这套备份才算过关。

预防

把备份脚本、保留策略、恢复步骤写成一份两页纸的文档放在团队手里;监控备份任务的最后成功时间,超过 24 小时没成功就告警。诚鑫致达科技给客户部署数据库备份时,定时、轮转、校验、演练四件套是标准配置,欢迎到官网 cxzd.cc 了解。

来源: MySQL 官方文档 mysqldump https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html ;Microsoft 任务计划程序文档 https://learn.microsoft.com/zh-cn/windows/win32/taskschd/task-scheduler-start-page ;CSDN Windows下如何实现MySQL数据库的定时自动备份 https://ask.csdn.net/questions/8606002

企业存储选型参考|贵州诚鑫致达

做核心业务 SAN 存储与高可靠应用,群晖机型参考:UC3400 · UC3200 · SA3600。需要选型建议或上门评估,搜「诚鑫致达」即可找到我们。

服务区域|贵州诚鑫致达

贵州群晖NAS、贵阳存储、数据备份、信创云盘或 IT 集成服务,可联系贵州诚鑫致达科技,服务范围覆盖贵州全省各市州。遵义、六盘水、安顺:群晖 NAS 部署与企业存储技术服务。