使用MySQL命令行备份数据库是数据库管理中的基础操作,主要通过mysqldump工具实现,该工具是MySQL官方提供的逻辑备份工具,能够将数据库中的数据和结构导出为SQL文本文件,便于迁移、备份或恢复,以下是详细的操作步骤、参数说明及注意事项。

基础备份操作
备份单个数据库
命令格式:
mysqldump -u [用户名] -p [数据库名] > [备份文件名].sql
备份用户名为root、数据库名为testdb的数据库到testdb_backup.sql:
mysqldump -u root -p testdb > testdb_backup.sql
执行后,系统会提示输入密码,输入正确密码即可开始备份。
备份多个数据库
使用--databases参数,可同时备份多个数据库:

mysqldump -u root -p --databases db1 db2 > multi_db_backup.sql
备份所有数据库
使用--all-databases参数备份所有数据库:
mysqldump -u root -p --all-databases > all_db_backup.sql
高级参数说明
mysqldump支持丰富的参数,常用参数如下表所示:
| 参数 | 作用 | 示例 |
|---|---|---|
-h | 指定数据库主机地址 | -h 192.168.1.100 |
-P | 指定数据库端口 | -P 3306 |
--add-drop-database | 在CREATE DATABASE语句前添加DROP DATABASE语句 | --add-drop-database |
--no-data | 只备份结构,不备份数据 | --no-data |
--routines | 备份存储过程和函数 | --routines |
--triggers | 备份触发器 | --triggers |
--single-transaction | 在单个事务中备份,保证数据一致性(适用于InnoDB) | --single-transaction |
备份包含存储过程和触发器的数据库,并确保数据一致性:
mysqldump -u root -p --routines --triggers --single-transaction testdb > testdb_full_backup.sql
恢复数据库
恢复数据库使用mysql命令,格式如下:

mysql -u [用户名] -p [数据库名] < [备份文件名].sql
恢复testdb_backup.sql到testdb数据库:
mysql -u root -p testdb < testdb_backup.sql
注意:恢复前需确保目标数据库已存在,若不存在,需先创建:
mysql -u root -p -e "CREATE DATABASE testdb"
注意事项
- 权限要求:执行备份的用户需具备SELECT、LOCK TABLES、SHOW VIEW、EVENT等权限,恢复时需具备CREATE、INSERT、UPDATE等权限。
- 大数据库处理:对于大型数据库,备份文件可能很大,建议压缩备份(如使用
gzip):mysqldump -u root -p testdb | gzip > testdb_backup.sql.gz
- 字符集一致性:确保备份和恢复时的字符集一致,可通过
--default-character-set指定,如--default-character-set=utf8mb4。
相关问答FAQs
Q1:备份时提示“Access denied”怎么办?
A1:检查用户权限是否足够,确保用户有SELECT、LOCK TABLES等权限,可使用GRANT命令授权,如:
GRANT SELECT, LOCK TABLES ON *.* TO 'backupuser'@'localhost'; FLUSH PRIVILEGES;
Q2:如何只备份表结构不备份数据?
A2:使用--no-data参数,
mysqldump -u root -p --no-data testdb > testdb_structure.sql
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/416971.html<
