mysqldump 常用操作总结操作
在对数据库进行维护的过程中,mysqldump是导出数据过程中使用非常频繁的一个工具。本文会列举一些常用的操作。
1.默认无参数操作
#方法一:
mysqldump [OPTIONS] database [tables]
#方法二:
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
#方法三:
mysqldump [OPTIONS] --all-databases [OPTIONS]
采用这三种方法导出的数据,文本内容大概如下:创建数据库判断语句-删除表-创建表-锁表-禁用索引-插入数据-启用索引-解锁表。
在日常需求中我们需要根据要求导出数据,所以只使用默认参数导出的方法完全不能满足我们的需求。
2.导出全部数据库
#【-A, --all-databases】导出所有数据库数据,包括数据库和表的创建脚本
mysqldump -uroot -pmysql -A > ./all.sql
#【-a】导出包括创建选项,默认启用(如创建表时带有选项 ENGINE DEFAULT CHARSET);
# 相反:不需要选项则使用 --skip-create-options
mysqldump -uroot -pmysql -a test >./test.sql
mysqldump -uroot -pmysql --skip-create-options test >./test.sql
3.导出test、dbname2两个数据库的所有数据
#【-B, --databases】导出指定数据库数据,包括数据库和表的创建脚本
# 相反使用 -n, --no-create-db
mysqldump -uroot -pmysql -B test dbname2
mysqldump -uroot -pmysql -n test
4.导出db1中的a1、a2表
注意导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据
mysqldump -uroot -pmysql --databases db1 --tables a1 a2 >./db1.sql
5.条件导出,导出db1表a1中id=1的数据
如果多个表的条件相同可以一次性导出多个表
字段是整形
mysqldump -uroot -pmysql -B db1 --tables a1 --where='id=1' >./a1.sql
字段是字符串,并且导出的sql中不包含drop table,create table
[–no-create-info 或者 -t] 只导出数据,而不添加CREATE TABLE 语句
mysqldump -uroot -pmysql -t -B db1 --tables a1 --where="id='a'" >./a1.sql
6.导出完整插入语句
#【-c】完整插入语句,insert时把字段名都列出,如insert into tab(id,name)valeus(1,'A')
mysqldump -uroot -pmysql -B -c test
#【-C】服务器客户端协议间使用压缩
mysqldump -uroot -pmysql -B -C test
只导出 Insert 语句的数据 及 表结构
mysqldump -uroot -pmysql --skip-add-drop-table -B test --tables tablename > /root/table.sql
只导出 Insert 语句的数据
mysqldump -uroot -pmysql --no-create-info -B test --tables tablename > /root/table.sql
#【-e, --extended-insert】多个insert使用一个语句多个values,默认启用
#相反:每个value一个insert则使用 --skip-extended-insert
mysqldump -uroot -pmysql -e test
mysqldump -uroot -pmysql --skip-extended-insert test
7.只导出表结构不导出数据,[–no-data, -d]
#【--no-data, -d】只导出创建脚本,不导出数据
mysqldump -uroot -pmysql -d test
8.跨服务器导出导入数据
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test
9.导出时锁定
#【-l, --lock-tables】导出时锁定所有表,使保持一致性。
mysqldump -uroot -pmysql -l test
#【-x, --lock-all-tables】 锁定所有数据库和表,全局读锁。关闭 --single-transaction 和 --lock-tables
mysqldump -uroot -pmysql -x test
其它常用选项:
--no-create-db, ---取消创建数据库sql(默认存在)
--no-create-info,---取消创建表sql(默认存在)
--no-data ---不导出数据(默认导出)
--add-drop-database ---增加删除数据库sql(默认不存在)
--skip-add-drop-table ---取消每个数据表创建之前添加drop数据表语句(默认每个表之前存在drop语句)
--skip-add-locks ---取消在每个表导出之前增加LOCK TABLES(默认存在锁)
--skip-comments ---注释信息(默认存在)
mysqldump参数说明
Mysql数据库操作总结
还没有评论,来说两句吧...