好的,阿杰 😄,我帮你整理一份 MySQL mysqldump 使用详解,涵盖基本用法、参数说明、备份恢复及高级技巧,适合新手和实战参考。


🛠️ MySQL mysqldump 使用详解

一、概念

  • mysqldump 是 MySQL 提供的 逻辑备份工具
  • 功能:
    • 备份数据库、表结构和数据
    • 支持导出为 SQL 文件,可用于恢复
    • 可结合压缩工具生成压缩备份

二、基本语法

mysqldump [options] db_name [tables] > backup.sql
  • [options]:连接、认证、格式、导出选项等
  • db_name:要备份的数据库
  • [tables]:指定表,不填则备份整个数据库
  • > backup.sql:导出到 SQL 文件

三、常用参数

参数说明
-u / --userMySQL 用户名
-p提示输入密码
-h / --hostMySQL 主机,默认 localhost
--portMySQL 端口
--all-databases备份所有数据库
--databases指定多个数据库备份
--tables指定表备份
--no-data只导出表结构,不导出数据
--no-create-info不导出建表语句,只导出数据
--single-transaction对 InnoDB 表使用事务保证备份一致性
--routines导出存储过程和函数
--triggers导出触发器(默认导出)
--events导出事件
--lock-tables备份前锁定表(默认启用)

四、常见用法

1. 备份单个数据库

mysqldump -u root -p test_db > test_db.sql

2. 备份多个数据库

mysqldump -u root -p --databases db1 db2 db3 > multi_db.sql

3. 备份所有数据库

mysqldump -u root -p --all-databases > all_db.sql

4. 只备份表结构

mysqldump -u root -p --no-data test_db > test_db_structure.sql

5. 只备份表数据

mysqldump -u root -p --no-create-info test_db > test_db_data.sql

6. 备份指定表

mysqldump -u root -p test_db table1 table2 > tables.sql

7. 使用事务保证 InnoDB 数据一致性

mysqldump -u root -p --single-transaction test_db > test_db.sql

8. 备份并压缩

mysqldump -u root -p test_db | gzip > test_db.sql.gz

五、恢复数据库

1. 使用 SQL 文件恢复

mysql -u root -p test_db < test_db.sql

2. 使用压缩文件恢复

gunzip < test_db.sql.gz | mysql -u root -p test_db

3. 恢复全部数据库

mysql -u root -p < all_db.sql

六、高级技巧

  1. 定时自动备份
0 2 * * * mysqldump -u root -pPassword test_db > /backup/test_db_$(date +\%F).sql
  • 每天凌晨 2 点备份
  1. 只导出增量数据
  • mysqldump 本身不支持增量备份,可配合 二进制日志 (binlog) 实现增量
  1. 远程备份
mysqldump -h 192.168.1.100 -P 3306 -u root -p test_db > test_db.sql
  1. 跳过某些表
mysqldump -u root -p test_db --ignore-table=test_db.table1 --ignore-table=test_db.table2 > backup.sql

七、小结

  • mysqldump 是逻辑备份 → 可跨平台导入导出
  • 单库、多库、全库都可备份 → 灵活使用参数
  • InnoDB 表可使用事务保证一致性
  • 压缩、定时、远程备份 → 适合生产环境