好的,阿杰 😄,我帮你整理一份 MySQL mysqldump
使用详解,涵盖基本用法、参数说明、备份恢复及高级技巧,适合新手和实战参考。
🛠️ MySQL mysqldump
使用详解
一、概念
mysqldump
是 MySQL 提供的 逻辑备份工具- 功能:
- 备份数据库、表结构和数据
- 支持导出为 SQL 文件,可用于恢复
- 可结合压缩工具生成压缩备份
二、基本语法
mysqldump [options] db_name [tables] > backup.sql
[options]
:连接、认证、格式、导出选项等db_name
:要备份的数据库[tables]
:指定表,不填则备份整个数据库> backup.sql
:导出到 SQL 文件
三、常用参数
参数 | 说明 |
---|---|
-u / --user | MySQL 用户名 |
-p | 提示输入密码 |
-h / --host | MySQL 主机,默认 localhost |
--port | MySQL 端口 |
--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
六、高级技巧
- 定时自动备份
0 2 * * * mysqldump -u root -pPassword test_db > /backup/test_db_$(date +\%F).sql
- 每天凌晨 2 点备份
- 只导出增量数据
mysqldump
本身不支持增量备份,可配合 二进制日志 (binlog
) 实现增量
- 远程备份
mysqldump -h 192.168.1.100 -P 3306 -u root -p test_db > test_db.sql
- 跳过某些表
mysqldump -u root -p test_db --ignore-table=test_db.table1 --ignore-table=test_db.table2 > backup.sql
七、小结
- mysqldump 是逻辑备份 → 可跨平台导入导出
- 单库、多库、全库都可备份 → 灵活使用参数
- InnoDB 表可使用事务保证一致性
- 压缩、定时、远程备份 → 适合生产环境
发表回复