全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-15 7 分钟 ✍️ juanwangdev

MySQL mysqldump工具使用

mysqldump 是 MySQL 最常用的逻辑备份工具,通过导出 SQL 语句实现数据备份。

基本语法

Bash
mysqldump [options] db_name [tables] > backup.sql
mysqldump [options] --databases db1 db2 > backup.sql
mysqldump [options] --all-databases > backup.sql

常用参数

参数说明
-u用户名
-p密码
-h主机地址
-P端口
--databases指定多个数据库
--all-databases备份所有数据库
--no-data只备份结构
--no-create-info只备份数据
--single-transactionInnoDB一致性备份
--master-data记录binlog位置
--routines备储过程和函数
--triggers备触发器
--events备事件

备份示例

Bash
# 备份单个数据库
mysqldump -u root -p mydb > mydb.sql

# 备份单个表
mysqldump -u root -p mydb users > users.sql

# 备份多个表
mysqldump -u root -p mydb users orders > tables.sql

# 备份多个数据库
mysqldump -u root -p --databases db1 db2 db3 > dbs.sql

# 备份所有数据库
mysqldump -u root -p --all-databases > all.sql

一致性备份参数

Bash
# InnoDB 单事务一致性备份(推荐)
mysqldump -u root -p --single-transaction mydb > mydb.sql

# 记录binlog位置(用于增量恢复)
mysqldump -u root -p --single-transaction --master-data=2 mydb > mydb.sql
--master-data=1: 在备份中写入 CHANGE MASTER TO
--master-data=2: 写注释形式的 CHANGE MASTER TO

# 锁表备份(MyISAM使用)
mysqldump -u root -p --lock-tables mydb > mydb.sql

备份对象选项

Bash
# 备份表结构不含数据
mysqldump -u root -p --no-data mydb > schema.sql

# 备份数据不含表结构
mysqldump -u root -p --no-create-info mydb > data.sql

# 备份存储过程和函数
mysqldump -u root -p --routines --no-data mydb > routines.sql

# 备份触发器
mysqldump -u root -p --triggers --no-data mydb > triggers.sql

# 备份全部对象
mysqldump -u root -p --single-transaction \
  --routines --triggers --events mydb > full.sql

恢复数据

Bash
# 恢复数据库
mysql -u root -p mydb < mydb.sql

# 恢复所有数据库
mysql -u root -p < all.sql

# 在MySQL命令行恢复
mysql> USE mydb;
mysql> SOURCE /path/to/mydb.sql;

远程备份

Bash
# 远程主机备份
mysqldump -u root -p -h 192.168.1.100 -P 3306 mydb > mydb.sql

# 远程备份到本地
mysqldump -u root -p -h remote_host mydb | mysql -u root -p local_db

增强备份工具

Bash
# mydumper 多线程备份(更快)
mydumper -u root -p -B mydb -o /backup/mydb -t 4

# myloader 多线程恢复
myloader -u root -p -B mydb -d /backup/mydb -t 4

自动备份脚本

Bash
#!/bin/bash
# backup.sh
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="mydb"

mysqldump -u root -p'password' \
  --single-transaction \
  --routines --triggers \
  $DB_NAME > $BACKUP_DIR/$DB_NAME_$DATE.sql

# 压缩备份
gzip $BACKUP_DIR/$DB_NAME_$DATE.sql

# 删除30天前的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete

生产环境备份建议使用 --single-transaction 保证一致性。

要点总结

  • mysqldump 是逻辑备份工具,导出SQL文件
  • --single-transaction 实现 InnoDB 一致性备份
  • --master-data 记录binlog位置便于增量恢复
  • --routines --triggers --events 备份完整对象
  • mydumper/myloader 多线程备份更高效

📝 发现内容有误?点击此处直接编辑

← 上一篇 MySQL 锁的分类
下一篇 → MySQL 二进制日志与增量备份
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库