版本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