什么是mysqlpump


数据库备份有物理备份和逻辑备份两种形式,下面简单介绍这两种备份方式的区别,但不会太深入,毕竟本文的重点是mysqlpump。

  • 物理备份是将数据库的数据存储文件直接打包备份,也有些工具可以做物理备份。优点有:操作简单、恢复速度快;缺点有:版本兼容问题、数据有损坏的几率。可用于冷备份。

  • 逻辑备份是将数据库的结构/数据/存储过程(甚至是数据库用户表)以sql等形式,从数据库中导出。这种备份方式多是使用工具。优点有:数据库无关、平台无关、数据完整等;缺点有:导出/导入速度慢等。可用于热备份。

常用的逻辑备份工具有:mysqldump、mysqldumper等,本文将介绍自MySQL 5.7引入的新客户端工具mysqlpump,这个是作为mysqldump的继任者身份出现的,所以其设计和性能上是优于mysqldump的,下面介绍mysqlpump的特点。

  • 并行处理数据库以及数据库中的对象,以加快导出速度
  • 更好地控制要转储的数据库和数据库对象(表,存储的程序,用户帐户)
  • 创建压缩输出的能力
  • 导入数据时,InnoDB通过在插入行后添加索引,可以更快地为表创建二级索引
  • 导出进度展示(估计值)

mysqlpump使用

mysqlpump使用方法:

  • mysqlpump [OPTIONS] [–all-databases]
  • mysqlpump [OPTIONS] –databases DB1 [DB2 DB3…]
  • mysqlpump [OPTIONS] database [tables]

常用mysqlpump参数

  • –user=username –password 指定用户名,稍后输入密码

  • –default-parallelism=4 用4个线程去并发导出数据,每个表最多可以被一个线程操作

  • –exclude-databases=name 除了指定的库,其余库都导出。默认是导出所有库

  • –exclude-routines=name 除了指定的存储过程,其余存储过程都导出。默认是导出所有存储过程

  • –exclude-tables=name 除了指定的表,其余表都导出。默认是导出所有表

  • –include-tables=name 如果没有对应的exclude,只导出此参指定的表才会。如果有对应的exclude,则两者取并集。databases/routines都可以被include修饰

  • –no-create-db 不生成 create db语句。默认会生成。

  • –add-drop-table 在create table前加上drop if exist语句。默认不加。database/user都可以被add-drop修饰

  • –compress-output=algorithm 启用压缩,算法可选ZLIB、LZ4

    mysqlpump –compress-output=ZLIB > dump.zlib 压缩导出
    zlib_decompress dump.zlib dump.txt 解压缩

mysqldump对比mysqlpump

简单的说,mysqlpump是对mysqldump的升级,使用了多线程来并发导出多个表,在表比较多的情况下,能显著提高导出速度。不过由于mysqlpump中,每张表只能被一个线程导出,所以对于单表内容多的情况下,两者并无太大差别。

参考:

mysql-mysqlpump


文章作者: lcok
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 lcok !
打赏
  目录