MySQL 表级备份,就是只导出某一张或几张数据表,而不是整个数据库。最常用、最可靠的方式是使用
mysqldump工具,它原生支持按表名精确指定备份范围。
用 mysqldump 备份单个或多个表
语法很简单:在数据库名后面直接跟上表名(空格分隔),就能只导出这些表的结构和数据。
备份单张表:mysqldump -u 用户名 -p 数据库名 表名 > backup_table.sql备份多张表:
mysqldump -u 用户名 -p 数据库名 表1 表2 表3 > backup_tables.sql加
--single-transaction可避免锁表(适合 InnoDB):
mysqldump -u 用户名 -p --single-transaction 数据库名 表名 > backup.sql只备份表结构(不含数据),加
-d参数:
mysqldump -u 用户名 -p -d 数据库名 表名 > schema.sql
只备份数据不包含建表语句
如果只需要纯数据(比如用于迁移或清洗),可用
--no-create-info跳过 CREATE TABLE 语句,只保留 INSERT。
mysqldump -u 用户名 -p --no-create-info 数据库名 表名 > data_only.sql配合
--skip-extended-insert可让每行 INSERT 独立,方便查看或编辑
跳过某些列或按条件导出部分数据
mysqldump 本身不支持字段级过滤,但可通过
--where实现行级筛选,适用于按时间、状态等条件做增量备份片段。 只导出最近7天的数据:
mysqldump -u 用户名 -p --where="create_time >= DATE_SUB(NOW(), INTERVAL 7 DAY)" 数据库名 表名 > recent.sql注意:WHERE 条件要写成字符串形式,且字段名需确保存在,否则导出为空
恢复表级备份文件
备份生成的是 SQL 文件,恢复时直接用 mysql 命令执行即可,无需创建表(除非用了
-d或
--no-create-info)。 标准恢复:
mysql -u 用户名 -p 数据库名如果目标表已存在且想清空重导,可在备份时加
--add-drop-table,恢复前自动删表 若只想插入新数据、避免主键冲突,导入前可手动编辑 SQL 文件,把 INSERT 改为 INSERT IGNORE 或 REPLACE INTO
