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) |
导入 .txt | mysqlimport |
导入 .sql | source 或 mysql 库名 < xxx.sql |
相关
- MySQL 常用工具:
mysql、mysqladmin、mysqlbinlog、mysqlshow - MySQL 系统数据库:
information_schema元数据查询 - 锁概述与全局锁:全库逻辑备份与
--single-transaction