5.2 mysqldump备份数据库的用法详解

mysqldump 是 MySQL 自带的逻辑备份工具,用于导出数据库结构和数据,生成 .sql 文件,适用于数据迁移、备份恢复等场景。它支持全库备份、单库备份、单表备份,并可以结合 gzip 压缩以减少存储空间。


1. mysqldump 基本语法

mysqldump [选项] 数据库名 [表名] > 备份文件.sql

常用选项

选项 说明
-u 指定 MySQL 用户名(如 -uroot
-p 提示输入密码(-p密码 直接输入密码,不安全)
-h 指定 MySQL 服务器地址(默认 localhost
-P 指定 MySQL 端口(默认 3306
--databases 备份多个数据库
--all-databases 备份所有数据库
--no-data 只备份表结构,不备份数据
--no-create-info 只备份数据,不备份表结构
--single-transaction 使用事务保证数据一致性(InnoDB)
--lock-tables 锁定表(MyISAM 适用)
--where 按条件备份数据(如 --where="id>100"
--skip-add-drop-table 不生成 DROP TABLE 语句
--skip-comments 不生成注释
--result-file 指定输出文件(避免 Windows 换行符问题)

2. 备份示例

(1)备份单个数据库

mysqldump -u root -p 数据库名 > backup.sql

示例

mysqldump -u root -p mydb > mydb_backup.sql

(执行后会提示输入密码)

(2)备份多个数据库

mysqldump -u root -p --databases db1 db2 > multi_db_backup.sql

(3)备份所有数据库

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

(4)备份单个表

mysqldump -u root -p 数据库名 表名 > table_backup.sql

示例

mysqldump -u root -p mydb users > users_backup.sql

(5)只备份表结构(不含数据)

mysqldump -u root -p --no-data mydb > schema_only.sql

(6)只备份数据(不含表结构)

mysqldump -u root -p --no-create-info mydb > data_only.sql

(7)按条件备份数据

mysqldump -u root -p mydb users --where="age > 18" > adults.sql

(8)压缩备份(减少存储空间)

mysqldump -u root -p mydb | gzip > mydb_backup.sql.gz

恢复压缩备份

gunzip < mydb_backup.sql.gz | mysql -u root -p mydb

(9)远程备份

mysqldump -h 192.168.1.100 -P 3306 -u root -p mydb > remote_backup.sql

(10)增量备份(结合 binlog)

  1. 先全量备份
    mysqldump -u root -p --flush-logs --master-data=2 mydb > full_backup.sql
    
  2. 后续用 binlog 恢复增量数据
    mysqlbinlog mysql-bin.000123 | mysql -u root -p
    

3. 恢复数据库

(1)恢复整个数据库

mysql -u root -p mydb < mydb_backup.sql

(2)恢复单个表

mysql -u root -p mydb < users_backup.sql

(3)恢复所有数据库

mysql -u root -p < all_db_backup.sql

4. 高级用法

(1)排除某些表

mysqldump -u root -p mydb --ignore-table=mydb.logs --ignore-table=mydb.tmp > partial_backup.sql

(2)生成 CSV 格式备份

mysqldump -u root -p --tab=/tmp --fields-terminated-by=, --fields-enclosed-by='"' mydb

(每张表生成 .sql.txt 文件)

(3)定时备份(cron 任务)

0 3 * * * /usr/bin/mysqldump -u root -p密码 mydb | gzip > /backup/mydb_$(date +\%Y\%m\%d).sql.gz

(4)备份时忽略错误

mysqldump -u root -p --force mydb > backup.sql

5. 注意事项

  1. --single-transaction 适用于 InnoDB,保证备份一致性。
  2. --lock-tables 适用于 MyISAM,但会锁表影响写入。
  3. 大数据库备份 可能耗时较长,建议在低峰期进行。
  4. 密码安全 避免直接在命令行输入 -p密码,建议交互式输入。
  5. 恢复前检查 确保备份文件完整,避免数据损坏。

6. 总结

  • mysqldump 是 MySQL 逻辑备份工具,生成 .sql 文件。
  • 常用备份方式
    • 全库备份 --all-databases
    • 单库备份 mysqldump dbname
    • 单表备份 mysqldump dbname tablename
  • 恢复方式
    • mysql -u root -p dbname < backup.sql
  • 高级技巧
    • 压缩备份 gzip
    • 条件备份 --where
    • 远程备份 -h IP

掌握 mysqldump 可以轻松实现 MySQL 数据备份与恢复!🚀

全部评论(0)

头像
😃 😁 😅 😂 😍 😜 😝 🤑 🥵 🥰 😙 😎 😵 😭 😱 😖 🥳 👽 🙈 🤡 😤 💣 💯 💢 ❤️ 👍 👏 👋 👌 🤏 🙏
还没有任何评论哟~
目录