mysqldump 使用技巧

版本mysql5.7
mysqldump 常规用法

shell> mysqldump [arguments] > file_name
shell> mysqldump --all-databases > dump.sql     #备份所有数据库
shell> mysqldump --databases db1 db2 db3 > dump.sql   #备份指定数据库
#--all-databases , --databases选项, mysqldump 会将 CREATE DATABASE 和USE语句写入到备份文件
shell> mysqldump test t1 t3 t7 > dump.sql     #备份指定数据库的指定数据表
恢复
shell> mysql < dump.sql  
mysql> source dump.sql
或
shell> mysqladmin create db1
shell> mysql db1 < dump.sql

技巧:
1 备份指定数据库,拷贝到另一个数据库

shell> mysqldump db1 > dump.sql       #备份指定数据库,创建表结构和数据,不包含数据库本身(use db1)
shell> mysqladmin create db2               #新建数据库
shell> mysql db2 < dump.sql                 #拷贝数据

2 备份指定数据库函数,存储过程,触发器

shell > mysqldump --routines --triggers --events  db1 > dump.sql
#--triggers 是默认值,其他2个选项必须被指定
你也可以这样明确不使用这些选项
shell> mysqldump --skip-routines --skip-triggers --skip-events  db1 > dump.sql

3 只备份数据,或结构

shell> mysqldump --no-data test > dump-defs.sql     #只备份结构
shell> mysqldump --no-create-info test > dump-data.sql   #只备份结构

4 升级数据库后,测试结构逻辑是否异常

shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql
shell> mysql < dump-defs.sql
#没有数据的表能更快速的处理,能快速发现兼容性等潜在问题
#逻辑没有异常后,可以导入数据做测试 
shell> mysqldump --all-databases --no-create-info > dump-data.sql
shell> mysql < dump-data.sql

5 导出到txt文件

shell> mysqldump --tab=/tmp db1   
#如果遇到 secure-file-priv 错误,须修改安全目录
shell> mysqldump --tab=/tmp --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1
#产生2个文件,文本(数据)和sql(结构)
shell> mysql db1 < t1.sql      #导入表结构
shell> mysqlimport db1 t1.txt   #导入数据
或 用load data 导入
mysql> USE db1;
mysql> LOAD DATA INFILE 't1.txt' INTO TABLE t1;

#如果导出时 指定了特殊选项,导入时必须也指定
shell> mysqldump --tab=/tmp --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1
shell> mysqlimport --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1 t1.txt

猜你喜欢

转载自blog.csdn.net/CSDN1887/article/details/84344761