mysqldump 导出指定表_MySQL导入导出 —— mysqldump 简介及常见用法

本文详细介绍了如何使用mysqldump进行MySQL数据库的导出,包括db级和表级的导出,并列举了主要的导出参数,如--all-databases、--no-data和--single-transaction等。同时,也讨论了导入的方法和示例,包括mysql命令行source方式和系统命令行方式。
摘要由CSDN通过智能技术生成

91fd41b4ea2db6a75860702f7d8c52ce.png

一、 导出

导出用户需要有导出对象的权限,例如导出表要有select权限、导出视图要有show view权限、导出触发器要有trigger权限、需要锁表时要有lock tables权限等。

如果dump文件中包含了GTID信息,则无法导入到未启用GTID的数据库(低于5.6.9版本的数据库不支持GTID,因此也无法导入到这些库中)。

1. db级

导出所有db结构和数据(-A参数)mysqldump -uroot -p -A > /data/bak/all.sql 仅导出所有db结构(-d参数)mysqldump -uroot -p -A -d > /data/bak/all_struct.sql 仅导出所有db数据(-t参数)mysqldump -uroot -p -A -t > /data/bak/all_data.sql 导出单个db结构和数据mysqldump -uroot -p mydb > /data/bak/mydb.sql 导出单个db结构和数据(排除部分表)mysqldump -uroot -p mydb  --ignore-table=mydb.test1 --ignore-table=mydb.test2 > /data/bak/mydb.sql 仅导出单个db结构mysqldump -uroot -p mydb -d > /data/bak/mydb.sql 仅导出单个db数据mysqldump -uroot -p mydb -t > /data/bak/mydb.sql 导出多个db结构和数据(--databases参数,数据,结构单独导出方法同上)mysqldump -uroot -p --databases db1 db2 > /data/bak/muldbs.sql

2. 表级

导出指定db某张表(test)结构及数据(数据,结构单独备份方法同上)mysqldump -uroot -p dbname  test > db.sql 导出指定db中多张表(test1,test2,test3)结构及数据mysqldump -uroot -p dbname  test1 test2 test3 > db.sq


3. 主要导出参数

  • --all-databases, -A:备份所有数据库
  • --databases, -B:备份多个数据库。不使用该选项时,mysqldump把第一个名字参数作为db名,后面的作为表名;使用该选项时,则把每个名字都当作为db名。
  • default-character-set:指定默认字符集,不指定默认为UTF-8
  • --force, -f:即使发现sql错误,仍然继续备份
  • --no-data, -d:只导出表结构
  • --port=port_num, -P port_num:连接端口号
  • --quick, -q:强制mysqldump从服务器每次查询一行数据而不是查询整个表。避免大表导出时查询刷爆内存,同时还导致热点数据被刷出缓冲池。通常建议总是启用该选项。
  • --tables:覆盖 --databases or -B选项,后面所跟参数被视作表名
  • --tab=path(-T path):产生TAB分割的数据文件,为每张表建一个包含create table语句的tabname.sql和一个包含数据的tabname.txt文件
  • --xml, -X:导出为xml文件
  • --single-transaction:导出开始前先执行start transaction命令,导出时不锁表,仅支持InnoDB存储引擎,需要确保导出时无DDL操作
  • --lock-tables(-l):导出过程中依次锁住每个schema下所有表(只能保证各schema下表导出的一致性),被锁的表只能读,MyISAM存储引擎常用
  • --lock-all-tables(-x):导出过程中锁住所有schema下所有表,避免前面参数无法保证所有schema下表导出的一致性的问题,但是所有表都变为只读
  • --master-data=[value] 主要用于建从库。value=1时,dump文件包含change master语句,导入时自动执行;value=2时,change master语句被注释,需手动执行。--master-data会忽略--lock-tables选项,如果不加--single-transaction选项会自动使用--lock-all-tables
  • --where:指定导出条件
  • --events(-E):导出事件调度器
  • --routines(-R):导出存储过程和函数
  • --triggers:导出触发器
  • --hex-blob:将binary,varbinary,blog,bit列类型导出为16进制格式

二、 导入

导入用户需要有执行备份文件中语句的权限(ddl、dml等)。

1. 常用导入方法

  • 系统命令行方法
mysql -uroot -p < test_backup.sql
  • mysql命令行source方法
mysql -uroot -psource /home/mysql/test_backup.sql

2. 导入示例

导入所有数据库
  • mysql命令行:mysql>source /data/bak/all.sql
  • 系统命令行:mysql -uroot -p123456
导入单个数据库
  • mysql命令行:
mysql>use mydbmysql>source /data/bak/mydb.sql
  • 系统命令行:
mysql -uroot -p123456 mydb 导入单个数据库的多个表
  • mysql命令行:
mysql>use mydbmysql>source /data/bak/multables.sql
  • 系统命令行:
mysql -uroot -p123456 mydb 导入多个数据库(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
  • mysql命令行:
mysql>source f:\muldbs.sql
  • 系统命令行:
mysql -uroot -p123456 往期经典回顾 MD5sum 和 SHA256sum Apache与Tomcat有什么关系和区别 美国如果把根域名服务器封了,中国会从网络上消失? Linux chattr 命令,超越权限任性修改 【心语】      我一直坚持的一个信念是,改变不了大环境,就改变小环境,做自己力所能及的事情。你不能决定太阳几点升起,但可以决定自己几点起床。 【互动学习】      请有兴趣请加入微信【微信号:gj825666】,我们一起学习、成长。感谢诸位的支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值