上一篇
场景再现:凌晨3点,你突然接到报警——生产数据库被误删了重要表!😱 这时如果有一份最新备份,你就是拯救公司的英雄🦸,否则...(画面太美不敢想),别等灾难发生才后悔,今天就用10分钟学会MySQL的"数据保险箱"——mysqldump!
开始前确保:
mysql --version
能显示版本就行) # 快速检查MySQL连接(密码替换为你的) mysql -u root -p -e "SHOW DATABASES;"
mysqldump -u 用户名 -p 数据库名 > 备份文件名.sql # 示例:把mydb库备份到2025-08-backup.sql mysqldump -u root -p mydb > ~/backups/2025-08-backup.sql
💡 小技巧:添加--single-transaction
参数避免锁表(适合InnoDB引擎)
mysqldump -u root -p 数据库名 表名1 表名2 > tables_backup.sql # 示例:只备份orders和users表 mysqldump -u root -p mydb orders users > important_tables.sql
mysqldump -u root -p --no-data mydb > schema_only.sql
mysqldump -u root -p --no-create-info mydb > data_only.sql
参数 | 作用 | 典型场景 |
---|---|---|
--skip-lock-tables |
不锁表 | 备份时允许写入 |
--compress |
压缩传输 | 远程备份省带宽 |
--ignore-table |
排除特定表 | 跳过日志表等大文件 |
--where |
条件备份 | 只备份2025年的数据 |
实战示例:
# 压缩备份除logs表外的数据,且只备份status=1的记录 mysqldump -u root -p --compress --ignore-table=mydb.logs \ --where="status=1" mydb > filtered_backup.sql.gz
mysql -u root -p 目标数据库 < 备份文件.sql
mysql -u root -p mysql> CREATE DATABASE restored_db; # 先建库(若需要) mysql> USE restored_db; mysql> SOURCE /path/to/backup.sql;
⚠️ 重要提醒:恢复前务必先测试备份文件完整性!
# 检查SQL文件头部 head -n 10 backup.sql # 应该看到类似内容: # -- MySQL dump 10.13... # -- Host: localhost...
# 每天凌晨2点全量备份 0 2 * * * /usr/bin/mysqldump -u root -p密码 mydb > /backups/daily_$(date +\%F).sql
# 在crontab中添加压缩和清理 0 3 * * * find /backups -name "*.sql" -mtime +7 -delete
mydb_v2_20250815.sql
) ❌ 错误1:密码明文写在命令行(会被history
记录)
✅ 改正:使用--defaults-file
指定配置文件
❌ 错误2:备份过程中磁盘写满
✅ 预防:先用SELECT SUM(data_length) FROM information_schema.TABLES
估算大小
mysqldump就是数据库的"时光机"⏳——简单命令搞定数据回滚,关键是要定期备份、多重验证、异地保存,现在就去给自己定个备份闹钟吧!⏰
ℹ️ 本文方法基于MySQL 8.0验证(2025-08技术环境),其他版本可能略有差异。
本文由 时齐 于2025-08-03发表在【云服务器提供商】,文中图片由(时齐)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/525209.html
发表评论