使用 –ignore-table 参数可排除指定表,语法为 mysqldump -u [用户] -p [数据库] –ignore-table=数据库名.表名 > backup.sql;排除多个表时重复该参数即可,支持全库备份时排除特定表,需注意表名格式和大小写敏感问题。

在使用 mysqldump 备份 mysql 数据库时,如果想排除某些表(比如日志表或临时数据表),可以通过 –ignore-table 参数实现。这个参数允许你指定要跳过的表,支持多次使用来排除多个表。
基本语法
mysqldump -u [用户名] -p[密码] –host=[主机名] [数据库名] –ignore-table=[数据库名].[表名] > backup.sql
注意: -p 后面直接跟密码时不需要空格,但出于安全考虑建议省略密码,执行时会提示输入。
排除单个表
例如,排除数据库 mydb 中的 logs 表:
mysqldump -u root -p mydb –ignore-table=mydb.logs > backup.sql
排除多个表
只需重复使用 –ignore-table 参数。比如排除 logs 和 temp_data 两个表:
mysqldump -u root -p mydb –ignore-table=mydb.logs –ignore-table=mydb.temp_data > backup.sql
排除多个数据库中的表(备份整个实例时)
如果你正在使用 –all-databases,也可以排除特定数据库下的表:
mysqldump -u root -p –all-databases –ignore-table=mysql.Event –ignore-table=test.temp_table –ignore-table=mydb.logs > full_backup.sql
提示: 使用 –all-databases 时仍可使用 –ignore-table 排除个别表,非常适用于跳过大型日志表或缓存表。
常见问题与建议
- 表名必须包含数据库名,格式为 数据库名.表名,否则会报错或无效。
- 参数区分大小写,尤其是在 linux 系统上。
- 可以结合 –single-transaction 保证一致性,尤其对 InnoDB 表有效。
- 排除的表不会出现在导出文件中,也不会被恢复。
基本上就这些。只要记住使用 –ignore-table 并正确书写数据库和表名,就能灵活控制备份内容。不复杂但容易忽略细节。


