加速 gzip 压缩

rub*_*o77 15 backup compression gzip

有没有可能加快这个gzip过程?

我正在使用

mysqldump "$database_name" | gzip > $BACKUP_DIR/$database_name.sql.gz
Run Code Online (Sandbox Code Playgroud)

将数据库备份到目录中,$BACKUP_DIR.

手册页说:

-# --fast --best
使用指定的数字#调节压缩速度,其中-1还是--fast indi?cates 最快的压缩方法(较少压缩),-9 或 --best 表示最慢的压缩方法(最佳压缩)。默认压缩级别为 -6(即以牺牲速度为代价偏向于高压缩)。

  • 使用效果如何--fast
  • 这是否有效地降低了现代计算机上的 CPU 使用率?

我的测试结果

我没有注意到任何加速:

  • 7 分 47 秒(默认比率-6
  • 8 分 36 秒(比率--fast(= 9))

那么使用快速压缩似乎需要更长的时间?

只有更高的压缩才能真正减慢它的速度:

  • 11 分 57 秒(与比率--best( = 1 ))

在获得想法后,lzop我也进行了测试,它确实更快:

  • 6 分 14 秒 lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo

Mar*_*rco 21

如果你有一台多核机器,使用pigz比传统的 gzip 快得多。

pigz 代表 gzip 的并行实现,是 gzip 的全功能替代品,它在压缩数据时充分利用了多个处理器和多个内核。pigz 由 Mark Adler 编写,使用 zlib 和 pthread 库。

Pigz 可以用作 gzip 的直接替代品。请注意,只能并行化压缩,而不能并行化解压缩。

使用 pigz 命令行变为

mysqldump "$database_name" | pigz > $BACKUP_DIR/$database_name.sql.gz
Run Code Online (Sandbox Code Playgroud)


ter*_*don 6

来自man gzip

   -# --fast --best
          Regulate  the  speed  of compression using the
          specified digit #, where -1  or  --fast  indi?
          cates  the  fastest  compression  method (less
          compression) and -9 or  --best  indicates  the
          slowest compression method (best compression).
          The default compression level is -6 (that  is,
          biased  towards high compression at expense of
          speed).
Run Code Online (Sandbox Code Playgroud)


fro*_*utz 5

如果由于数据库锁定问题而需要快速,并且您有足够快/足够大的磁盘来临时保存未压缩的数据,则可以考虑使用此方法:

mysqldump "$database_name" > "$BACKUP_DIR"/"$database_name".sql
nice gzip "$BACKUP_DIR"/"$database_name".sql &
Run Code Online (Sandbox Code Playgroud)

即首先存储备份(如果磁盘很快而 CPU 很慢,这比 gzip 更快),然后在后台进行 gzip 。

这也可能允许您使用更好的压缩算法,因为(直接)压缩需要多长时间不再重要。