MySQL单库备份最常用可靠方式是mysqldump,推荐命令:mysqldump -u root -p --single-transaction --routines --triggers --set-gtid-purged=OFF --default-character-set=utf8mb4 myapp > myapp_$(date +%F).sql,需检查权限、磁盘空间并验证备份有效性。

MySQL 单库备份最常用、最可靠的方式是使用 mysqldump 命令,配合数据库名直接导出。只要权限正确、服务正常,一条命令就能完成干净的逻辑备份。
只备份指定数据库(基础命令)
执行以下命令即可仅备份某个数据库(例如 myapp):
mysqldump -u root -p myapp > myapp_backup.sql
系统会提示输入密码,成功后生成纯 SQL 文件,包含建库、建表、插入数据等完整语句。注意:不要在命令中写 USE myapp; 或额外加 --databases 参数——后者会多包一层 CREATE DATABASE 和 USE,对单库备份反而冗余。
推荐加上的实用参数
为提升兼容性与恢复可靠性,建议加上这几个关键选项:
-
--single-transaction:对 InnoDB 表做一致性快照,避免锁表(备份时业务可继续读写) -
--routines:一并导出存储过程和函数 -
--triggers:导出触发器 -
--set-gtid-purged=OFF:若用 GTID 且不打算跨实例恢复,关掉该选项可避免导入报错 -
--default-character-set=utf8mb4:显式指定字符集,防止中文乱码
组合示例:mysqldump -u root -p --single-transaction --routines --triggers --set-gtid-purged=OFF --default-character-set=utf8mb4 myapp > myapp_$(date +%F).sql
备份前检查与避坑提醒
执行前快速确认几件事,能省去后续很多麻烦:
- 确保用户有该数据库的
SELECT权限,以及LOCK TABLES(除非用了--single-transaction) - 磁盘空间是否足够?
mysqldump输出的是文本,通常比实际数据文件大 1.2–1.5 倍 - 避免在从库上用
--master-data,除非你明确需要记录主库 binlog 位置 - 不要用
mysqlhotcopy或直接拷贝.frm/.ibd文件来“单库备份”——它不是原子操作,极易损坏,也不支持 InnoDB 通用表空间
快速验证备份有效性
备份不是目的,能恢复才是关键。简单验证方法:
- 用
head -20 myapp_backup.sql看开头是否有CREATE DATABASE和USE myapp(有则说明是单库格式) - 用
grep -c "INSERT INTO" myapp_backup.sql确认数据行存在 - 挑一个测试库,执行
mysql -u root -p -e "CREATE DATABASE myapp_test;",再导入:mysql -u root -p myapp_test ,观察是否报错
不复杂但容易忽略。










