语法:
默认不带参数的导出,导出文本内容大概如下:创建数据库判断语句-删除表-创建表-锁表-禁用索引-插入数据-启用索引-解锁表。
1 2 3 | Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
|
一:导出数据库
代码如下:
1 2 3 | #mysqldump 数据库名 >数据库备份名
#mysqldump -A -u用户名 -p密码 数据库名>数据库备份名
#mysqldump -d -A --add-drop-table -uroot -p >xxx.sql
|
1.1:导出所有数据库
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off --all-databases > /data1/xinchen/testdump/all.sql
|
1.2:导出test_db1、test_db2数据库
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off --databases test_db1 test_db2> /data1/xinchen/testdump/dump_dbs.sql
|
二:导出表数据
2.1:导出test_db1中的table11、table12表
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off --databases test_db1 --tables table11 table12 > /data1/xinchen/testdump/dump_table1.sql
|
2.2:条件导出表数据
如果多个表的条件相同可以一次性导出多个表。
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off --databases test_db1 --tables table11 --where='id=11' > /data1/xinchen/testdump/dump_table2.sql
|
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off --databases test_db1 --tables table11 --where="name='name12'" > /data1/xinchen/testdump/dump_table3.sql
|
2.3:导出表数据,不包含drop table,create table
增加参数:--no-create-info
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off --no-create-info --databases test_db1 --tables table11 --where="name='name12'" > /data1/xinchen/testdump/dump_table4.sql
|
2.4.只导出表结构不导出数据
代码如下:
1 | mysqldump --opt -d 数据库名 -u root -p > xxx.sql
|
增加参数:--no-data
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off --no-data --databases test_db1 --tables table11 --where="name='name12'" > /data1/xinchen/testdump/dump_table5.sql
|
2.5.导出数据不导出结构
代码如下:
1 | mysqldump -t 数据库名 -uroot -p > xxx.sql
|
2.6.导出数据和表结构
代码如下:
1 | mysqldump 数据库名 -uroot -p > xxx.sql
|
2.7.导出特定表的结构
代码如下:
1 | mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql
|
三:其他导出参数
前面统一的内容都省略:
1 | mysqldump -h192.168.1.1 -P3306 -uroot -ppassword --set-gtid-purged=off
|
3.1:生成新的binlog文件:-F
有时候会希望导出数据之后生成一个新的binlog文件,只需要加上-F参数即可
mysqldump -h -P -u -p --set-gtid-purged=off -B test_db1 --tables table11 --where="name='name12'" > /tmp/tb1.sql
3.2:跨服务器导出导入数据
mysqldump --host=h1 -P -u -p --databases db1 | mysql --host=h2 -uroot -proot db2
3.2:--opt
等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.
mysqldump -uroot -p --host=localhost --all-databases --opt
四:导入数据
由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:
代码如下:
1 2 | #mysql 数据库名 < 文件名
#source /tmp/xxx.sql
|