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 ,观察是否报错
不复杂但容易忽略。
