MySQL 定时备份实战:mysqldump + cron 让数据丢不了

举报
yd_256292196 发表于 2026/11/05 09:05:02 2026/11/05
【摘要】 数据库最怕的不是出故障,而是出故障时才发现没有可用的备份。定时备份的核心不是命令多复杂,而是每天自动执行、定期验证恢复。mysqldump加cron这套组合简单可靠,适合大多数中小业务。先想清楚备份什么。业务库、存储过程、触发器和视图都要带上,单库备份可以用--databases指定库名。导出时加上--single-transaction,对InnoDB表做一致性快照,业务基本不用停服;再加...

数据库最怕的不是出故障,而是出故障时才发现没有可用的备份。定时备份的核心不是命令多复杂,而是每天自动执行、定期验证恢复。mysqldump加cron这套组合简单可靠,适合大多数中小业务。


先想清楚备份什么。业务库、存储过程、触发器和视图都要带上,单库备份可以用--databases指定库名。导出时加上--single-transaction,对InnoDB表做一致性快照,业务基本不用停服;再加上--routines和--triggers,避免恢复后程序缺逻辑。


mysqldump -u root -p --single-transaction --routines --triggers --databases app_db > /data/backup/app_db.sql


不要每次手敲命令,把它写进脚本。脚本里先定义备份目录和日期变量,导出后用gzip压缩,文件名带日期,方便按天查找;最后用find删除七天前的旧文件,防止备份把磁盘写满。脚本文件只给属主可执行权限,密码不要写进公开文档。


再把脚本交给cron。每天凌晨两点执行一次,业务低峰,日志重定向到固定文件,出问题先看日志。执行前用crontab -l确认任务确实在列表里,改完脚本先手动跑一次,不要等到第二天才发现路径写错。


0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1


备份不演练等于没备份。每月至少在测试库恢复一次,核对表数量、关键数据行数和恢复耗时,确认备份文件不是空文件、压缩包能正常解压。恢复命令很简单,把备份文件重定向给mysql客户端即可,恢复前务必确认目标库,避免覆盖生产数据。


常见坑还有三点:备份目录尽量不与数据盘同盘,条件允许再异地存一份;磁盘空间和备份失败都要告警;大库可以按库分开、错峰备份。流程跑通并坚持执行,数据丢失的风险就小得多。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。