使用
mysqldump备份 MySQL 数据库是最常用、最可靠的方式之一,它能生成可读的 SQL 文件,便于恢复、迁移或版本管理。
基础备份命令(单库)
最简单的用法是备份一个数据库到 SQL 文件:
mysqldump -u username -p database_name > backup.sql
执行后会提示输入密码。注意:用户名需有该库的
SELECT权限,推荐使用专用只读账号。
带时间戳的自动备份文件名
避免覆盖旧备份,建议在文件名中加入日期:
mysqldump -u root -p myapp > myapp_$(date +%Y%m%d_%H%M%S).sql
在 Linux/macOS 中可直接运行;Windows 用户可用 PowerShell 的
Get-Date -Format "yyyyMMdd_HHmmss"替代。
常用实用参数组合
生产环境建议加上这些选项提升兼容性和可靠性:
--single-transaction:对 InnoDB 表启用一致性快照,避免锁表(推荐)
--routines:导出存储过程和函数
--triggers:导出触发器
--events:导出事件调度器定义
--set-gtid-purged=OFF:关闭 GTID 相关语句(用于非 GTID 环境或避免恢复报错)
完整示例:
mysqldump -u root -p --single-transaction --routines --triggers --events --set-gtid-purged=OFF myapp > myapp_full_$(date +%Y%m%d).sql
备份多个库或排除某些表
备份多个指定数据库:
mysqldump -u root -p --databases db1 db2 db3 > multi_db_backup.sql
跳过某个大表(如日志表)节省空间和时间:
mysqldump -u root -p myapp --ignore-table=myapp.log_table > backup_no_log.sql
注意:
--ignore-table必须写成
db_name.table_name格式,且区分大小写(取决于系统配置)。
压缩备份文件(节省空间)
直接管道压缩,不生成中间文件:
mysqldump -u root -p myapp | gzip > myapp_$(date +%Y%m%d).sql.gz
恢复时用:
gunzip
