Jw
首页
技术
英语
首页
技术
英语
  • MySQL

    • MySQL 基础
    • 环境变量配置(PATH)
    • SQL 语法与分类
    • MySQL 数据类型
    • SQL - DDL 数据定义语言
    • SQL - DML 数据操作语言
    • SQL - DQL 数据查询语言
    • SQL - DCL 数据控制语言
    • MySQL 函数
    • SQL 约束
    • SQL 外键约束
    • 多表关系
    • 多表查询(连接查询)
    • 隐式内连接 vs 显式内连接
    • 子查询
    • 多表查询案例
    • 事务
    • 并发事务问题与隔离级别
    • MySQL 体系结构与存储引擎
    • 索引概述
    • 索引结构
    • 索引分类
    • 索引语法
    • SQL 性能分析
    • 索引使用
    • 索引设计原则
    • SQL 优化 - 插入数据与主键优化
    • SQL 优化 - order by 与 group by
    • SQL 优化 - limit / count / update
    • 视图
    • 存储过程
    • 存储过程 - 变量
    • 存储过程 - 流程控制、游标与条件处理
    • 存储函数
    • 触发器
    • 锁概述与全局锁
    • 表级锁
    • 行级锁
    • InnoDB 逻辑存储结构
    • InnoDB 架构
    • 事务原理(redo / undo log)
    • MVCC
    • MySQL 系统数据库
    • MySQL 常用工具
    • 数据备份与导入导出
    • 错误日志与二进制日志
    • 查询日志与慢查询日志
    • 主从复制 - 概述与原理
    • 主从复制 - 搭建
    • Mycat 配置
    • Mycat 垂直拆分与水平拆分
    • Mycat 分片规则
    • Mycat 管理与监控
    • Mycat 读写分离 - 一主一从
    • Mycat 读写分离 - 双主双从

MySQL 数据备份与导入导出

mysqldump 负责把库 / 表导出成 SQL 或文本,mysqlimport 导入 -T 导出的文本文件,source 导入 .sql 文件。

一、mysqldump(备份 / 迁移)

mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表的 SQL 语句,以及插入表的 SQL 语句。

mysqldump [options] db_name [tables]
mysqldump [options] --database/-B db1 [db2 db3...]
mysqldump [options] --all-databases/-A
形式导出范围
db_name [tables]指定库(可只导出其中若干张表)
-B/--database db1 [db2...]导出多个库,备份文件中带 CREATE DATABASE
-A/--all-databases导出全部库

1.1 连接选项

选项含义
-u, --user=name指定用户名
-p, --password[=name]指定密码
-h, --host=name指定服务器 IP 或域名
-P, --port=#指定连接端口

1.2 输出选项

选项含义
--add-drop-database在每个数据库创建语句前加上 DROP DATABASE 语句
--add-drop-table在每个表创建语句前加上 DROP TABLE 语句,默认开启;不开启用 --skip-add-drop-table
-n, --no-create-db不包含数据库的创建语句
-t, --no-create-info不包含数据表的创建语句
-d, --no-data不包含数据
-T, --tab=name自动生成两个文件:一个 .sql 文件(建表结构)、一个 .txt 文件(数据)

1.3 示例

# 备份单个库(含建库、建表、数据)
mysqldump -uroot -p123456 itcast > itcast.sql

# 只备份表结构,不要数据
mysqldump -uroot -p123456 -d itcast > itcast_schema.sql

# 备份多个库(备份文件含 CREATE DATABASE)
mysqldump -uroot -p123456 -B db01 db02 > dbs.sql

# 备份全部库
mysqldump -uroot -p123456 -A > all.sql

# 按表拆分:生成 city.sql(结构)+ city.txt(数据)
mysqldump -uroot -p123456 -T /tmp itcast city

-T 要求服务端有 FILE 权限且目标目录可写,导出的 .txt 要用 mysqlimport 导入。

二、mysqlimport(导入文本文件)

mysqlimport 是客户端数据导入工具,用来导入 mysqldump 加 -T 参数后导出的文本文件。

mysqlimport [options] db_name textfile1 [textfile2...]
# 把 /tmp/city.txt 导入 test 库的 city 表
mysqlimport -uroot -p2143 test /tmp/city.txt

表名由文件名决定(city.txt → city 表),文件中的列顺序要与表结构一致。

三、source(导入 SQL 文件)

如果需要导入 .sql 文件,可以在 mysql 客户端中使用 source 指令。

source /root/xxxx.sql
# 方式一:先进入客户端,再执行 source
mysql -uroot -p123456
# mysql> source /root/itcast.sql

# 方式二:登录时直接指定数据库并执行
mysql -uroot -p123456 itcast < /root/itcast.sql

source 是客户端命令,不是 SQL 语句,末尾不要加分号也可以执行。

四、备份恢复流程

备份:mysqldump → xxx.sql
恢复:先建空库(如需要)→ mysql 库名 < xxx.sql 或 source xxx.sql
迁移:源库 mysqldump → 目标库 mysql < xxx.sql

速查

# 备份:单库 / 多库 / 全库
mysqldump -uroot -p123456 itcast > itcast.sql
mysqldump -uroot -p123456 -B db01 db02 > dbs.sql
mysqldump -uroot -p123456 -A > all.sql

# 只导结构 / 只导数据
mysqldump -uroot -p123456 -d itcast > schema.sql
mysqldump -uroot -p123456 -t itcast > data.sql

# 按表拆分:生成 city.sql + city.txt
mysqldump -uroot -p123456 -T /tmp itcast city

# 导入文本(-T 导出的 .txt)
mysqlimport -uroot -p2143 test /tmp/city.txt

# 导入 SQL
mysql -uroot -p123456 itcast < /root/itcast.sql
# 或进入客户端后:
source /root/itcast.sql
要做什么用什么
备份整库mysqldump 库名 > xxx.sql
只备份表结构-d(--no-data)
只备份数据-t(--no-create-info)
导入 .txtmysqlimport
导入 .sqlsource 或 mysql 库名 < xxx.sql

相关

  • MySQL 常用工具:mysql、mysqladmin、mysqlbinlog、mysqlshow
  • MySQL 系统数据库:information_schema 元数据查询
  • 锁概述与全局锁:全库逻辑备份与 --single-transaction
最近更新: 2026/10/25 11:41
Contributors: liujw
Prev
MySQL 常用工具
Next
错误日志与二进制日志