逻辑备份
备份过程比较慢,类似oracle数据泵。缺点非innodb表备份时会锁表。
mysqldump
mysqldump适用于几个表或者单个database或者小数据量的数据库导出。
缺点:大数据量时速度慢。
优点:导出灵活。
导出用mysqldump,导入用mysql命令。
示例导出:
同库导出导入:
导出a库中的表test,导出单表:
mysqldump -uroot -p --databases a --tables test > /tmp/test.sql
mysqldump -uroot -p a test > /tmp/test1.sql
导出多表:(表之间空格隔开)
mysqldump -uroot -p a test1 test2 > /tmp/a.sql
mysqldump -uroot -p --databases a --tables test1 test2 > /tmp/a.sql
附带参数如下:
-t不带建表语句,只导插入数据的语句;
-d不导插入数据的语句,只有建表语句。
导出满足条件的表数据:
mysqldump -uroot -p --databases a --tables a --where=“id<=2” > a.sql
示例导入:
导入单表:mysql -uroot -p a < /tmp/test.sql(多表和单表一样,往b数据库导入改个名字就可以,也可使用mysqlimport工具导入,不再赘述)
数据库导出导入示例:
只导出结构不含数据:
mysqldump -uroot -p -d --databases a > a.sql
含数据:
mysqldump -uroot -p a> a.sql
导出a库,但排除test表:
mysqldump -uroot -p a–ignore-table=a.test > a.sql(如果排除多个表,就写多个–ignore-table)
导入
mysqladmin -uroot -p create a
mysql -uroot -p a < a.sql或登录a数据库然后source a.sql
加压缩导出导入:
导出:
mysqldump -uroot -p -B a | gzip > a.sql.gz
导入:
gunzip < a.sql.gz | mysql -uroot -p
导出导入多个库:
mysqldump -uroot -p -B a b > ab.sql
mysql -uroot -p < ab.sql
导出整个库
mysqldump -uroot -p --all-databases > all.db
select … into outfile
速度非常快,比insert的插入速度要快很多,只能备份表中的数据,不能备份表的结构
备份:select * from a into outfile ‘/tmp/a.sql’;
恢复:load data infile ‘/tmp/a.sql’ into table a.a;
mysqlpump
并行备份数据库和数据库中的对象的,加快备份过程;
备份出来直接生成压缩后的备份文件;
还原备份文件,先建表后插入数据最后建立索引,减少了索引维护开销,加快了还原速度。
可选参数:
–add-drop-database:在建立库之前先执行删库操作。
–add-drop-table:在建表之前先执行删表操作。
–add-drop-user:在CREATE USER语句之前增加DROP USER,注意:这个参数需要和–users一起使用,否者不生效。
–add-locks:备份表时,使用LOCK TABLES和UNLOCK TABLES。注意:这个参数不支持并行备份,需要关闭并行备份功能:–default-parallelism=0
–complete-insert:dump出包含所有列的完整insert语句。
–compress: 压缩客户端和服务器传输的所有的数据,-C。
–compress-output:默认不压缩输出,目前可以使用的压缩算法有LZ4和ZLIB。
shell> mysqlpump --compress-output=LZ4 > dump.lz4
shell> lz4_decompress dump.lz4 dump.txt
shell> mysqlpump --compress-output=ZLIB > dump.zlib
shell> zlib_decompress dump.zlib dump.txt
–default-parallelism:指定并行线程数,默认是2,如果设置成0,表示不使用并行备份。注意:每个线程的备份步骤是:先create table但不建立二级索引(主键会在create table时候建立),再写入数据,最后建立二级索引。
–exclude-databases:备份排除该参数指定的数据库,多个用逗号分隔。类似的还有–exclude-tables、–exclude-triggers、–exclude-users。
mysqlpump --exclude-databases=mysql,sys #备份过滤mysql和sys数据库
mysqlpump --exclude-tables=rr,tt #备份过滤所有数据库中rr、tt表
mysqlpump -B test --exclude-tables=tmp_ifulltext,tt #备份过滤test库中的rr、tt表
–log-error-file:备份出现的warnings和erros信息输出到一个指定的文件。
–no-create-info:备份不写建表语句,即不备份表结构,只备份数据,-t。
–skip-dump-rows:只备份表结构,不备份数据,-d。注意:mysqldump支持–no-data,mysqlpump不支持–no-data
示例:
mysqlpump压缩备份a数据库 三个并发线程备份。
mysqlpump -uroot -p -h192.168.6.123 --single-transaction --default-character-set=utf8 --compress-output=LZ4 --default-parallelism=3 -B a > a.sql.lz4
mysqlpump只导出授权语句:
mysqlpump -uroot -p --exclude-databases=% --users --set-gtid-purged=OFF(https://blog.csdn.net/weixin_34204057/article/details/86004250)
官网链接:
https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html




