mysqldump
最后更新于:2022-04-02 03:57:19
[TOC]
## 语法
```
mysqldump [OPTIONS] database [tables]
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
mysqldump [OPTIONS] --all-databases [OPTIONS]
参数
-A,--all-databases 导出全部数据库
-B,--databases 指定数据库 --databases db1
-C,--compress 在客户端和服务器之间启用压缩传递所有信息
--add-drop-database 每个数据库创建之前添加drop数据库语句
--add-drop-table 每个数据表创建之前添加drop数据表语句(默认开启)
--skip-add-drop-table 取消每个数据表创建之前添加drop数据表语句
--comments 附加注释信息(默认)
--skip-comments 取消附加注释信息
--force 在导出过程中忽略出现的SQL错误
-x,--lock-all-tables 提交请求锁定所有数据库中的所有表,以保证数据的一致性
--skip-quote-names 取消使用 "`" 引起表和列名。(默认使用 "`")
--replace 使用REPLACE INTO 取代INSERT INTO
-E,--events 导出事件
-R,--routines 导出存储过程以及自定义函数
-X,--xml 导出XML格式
--socket,-S 指定连接mysql的socket文件位置,默认路径/tmp/mysql.sock
--user, -u 数据库用户名
-p 数据库密码
```
## 场景
### 导出所有数据库
```
mysqldump -uroot -proot --all-databases >/tmp/all.sql
```
### 导出多个数据库
```
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
```
### 导出多个表
```
mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql
```
### 按指定条件导出
**如果多个表的条件相同可以一次性导出多个表**
```
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql
```
### 生成新的binlog文件
```
mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql
```
### 只导出表结构不导出数据
```
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql
```
### 跨服务器导出并导入数据
```
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
实例:
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test
说明:
被导入的数据库必须先创建,否则报错
-C 起用压缩
```
### 导出可兼容其他数据库
**导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等**
```
mysqldump -uroot -p --all-databases --compatible=oracle
```
## 还原数据库
```
mysql --uroot -ptest db_name < backupfile.sql
```
### 导出带 csv 格式
```
./mysqldump -uroot -p -T /data/mysql/dump t2 test --fields-terminated-by ',' --fields-optionally-enclosed-by '"'
> cat test.csv
1,"a","\\\"##!aa"
2,"b","helloworld"
3,"c","helloworld"
4,"d","helloworld"
```
';