备份单个 MySQL 数据库最常用、最可靠的方式是使用
mysqldump命令,它能导出数据库结构(DDL)和数据(DML)为 SQL 脚本文件,便于恢复或迁移。
确认数据库名和用户权限
执行备份前,先登录 MySQL 验证目标数据库是否存在,并确认当前用户对该库有
SELECT权限(必要)、
LOCK TABLES(默认开启时需要,可跳过)、
SHOW VIEW(含视图时需要)等权限。可通过以下命令快速检查:
mysql -u 用户名 -p -e "SHOW DATABASES;"查看可用数据库列表
mysql -u 用户名 -p -e "USE 数据库名; SHOW TABLES;"确认库内表可访问
基础备份命令(含密码安全建议)
推荐使用配置文件方式避免密码明文暴露在命令行历史中。若必须临时使用,可按如下格式操作:
基本语法:mysqldump -u 用户名 -p 数据库名 > 备份文件.sql更稳妥写法(不显式输入密码):
mysqldump -u 用户名 -p 数据库名 > backup_数据库名_$(date +%Y%m%d).sql,回车后会提示输入密码 如需跳过锁表(适合读多写少场景):
--skip-lock-tables如需兼容其他 MySQL 版本或导出为更通用格式:
--compatible=mysql40或
--no-tablespaces
包含结构与数据的完整备份选项
默认
mysqldump已导出建表语句和 INSERT 语句,但以下参数可增强可靠性:
--single-transaction:对 InnoDB 表启用一致性快照,避免锁表,推荐生产环境使用
--routines:导出存储过程和函数
--triggers:导出触发器
--events:导出事件调度器任务(如有) 组合示例:
mysqldump -u 用户名 -p --single-transaction --routines --triggers --events 数据库名 > full_backup.sql
验证备份文件有效性
备份完成后不要直接归档,应快速验证是否可读、是否完整:
检查文件大小是否明显异常(如为 0 字节或仅几 KB,可能导出失败) 用head -n 20 backup.sql查看开头是否有
CREATE DATABASE或
USE `数据库名`等标识 尝试导入到测试库:
mysql -u 用户名 -p 新测试库名 ,观察是否报错
