上一篇
场景引入:
"完了完了,客户说系统数据出问题了,要回滚到上周的版本!" 办公室里,程序员小张突然从椅子上弹起来,旁边的老李慢悠悠喝了口茶:"慌啥,你不是用mysqldump
定期备份SQL文件吗?" 小张一愣:"啊?我...我上次备份还是三个月前..."
这种剧情在IT圈每天都在上演,数据是系统的命根子,而把MySQL数据库导出成SQL文件,就是给数据上保险的最基础操作,今天咱们就掰开揉碎,聊聊那些真正实用的MySQL导出技巧。
mysqldump
的六种姿势mysqldump -u用户名 -p密码 数据库名 > 备份文件.sql
注意:
-p
后面时不要有空格(比如-p123456
) mysqldump -u root -p --no-data 数据库名 > 纯结构.sql
适合只要表框架的场景,比如给新同事建测试环境。
mysqldump -u root -p 数据库名 表1 表2 > 部分表备份.sql
真实案例: 用户表users
和订单表orders
经常需要单独备份。
mysqldump -u root -p 数据库名 | gzip > 备份.sql.gz
导出的SQL文件能小70%以上,尤其适合大型数据库。
mysqldump -u root -p --all-databases | ssh user@远程服务器 "cat > /backup/全库备份.sql"
适用场景: 本地没空间,直接存到另一台服务器。
mysqldump -u root -p --routines --no-create-info --no-data 数据库名 > 存储过程备份.sql
很多DBA容易漏掉这个,等出事了才发现存储过程没备份。
mysqldump -u root -p 数据库名 --ignore-table=数据库名.日志表 > 精简版.sql
比如跳过那些动辄几十GB的日志表。
# 先导出结构 mysqldump -u root -p --no-data 数据库名 > 结构.sql # 再分批导出数据 mysqldump -u root -p --no-create-info --where="id<100000" 数据库名 表1 > 数据_第一部分.sql
mysqldump -u root -p --repair 数据库名 > 修复备份.sql
--compatible=mysql40
参数降级兼容 screen
或tmux
防止SSH断开导致前功尽弃 ACCESS DENIED
错误?试试--single-transaction
参数 最后唠叨一句:
导出SQL文件只是开始,记得定期验证备份能否正常恢复,去年某电商公司备份了半年,真要恢复时发现所有文件都损坏了——原来他们从没测试过恢复流程。
(本文方法测试环境:MySQL 5.7/8.0,CentOS/Ubuntu,最后验证时间2025年8月)
本文由 仍悦远 于2025-08-01发表在【云服务器提供商】,文中图片由(仍悦远)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/510129.html
发表评论