[译文] MySQL Shell 转储和加载和压缩

2024年 6月 30日 43.8k 0

MySQL Shell 是与 MySQL 一起使用的流行工具,它在 Oracle 云基础设施 (OCI) 中完美地集成了 MySQL 数据库服务 (MDS) 的所有内容。

对于任何逻辑转储和数据加载,尤其是将数据转储到 MDS,MySQL Shell Utility 是推荐的解决方案。

MySQL Shell Dump & Load 速度更快、并行且与 OCI 兼容(块存储、MDS 授权、自动主键创建等)

这篇文章是关于压缩的。

默认情况下,MySQL Shell Dump 使用zstd压缩。

Zstd 是 Zstandard 的缩写,是一种快速无损压缩算法,针对 zlib 级别压缩率的实时压缩场景。

可以使用压缩选项指定用于 MySQL Shell Dump Utility 的压缩算法。

接受的值为:

  • none
  • zstd (default)
  • gzip

如果您打算使用压缩和多线程(并行),建议为 MySQL Shell 准备一个强大的实例。

为了比较压缩算法和旧的mysqldump,我使用了一个 8 核的服务器(Intel® Xeon® Platinum 8167M CPU @ 2.00GHz - OCI 上的 VM.Standard2.4)。数据是一张47GB InnoDB Data的单表!

[译文] MySQL Shell 转储和加载和压缩-1

转储数据

MySQL Shell 的默认并行度是使用 4 个线程。

如果您有大型数据集要转储和加载,我建议您拥有一台具有更多内核的机器,并使用线程选项指定更多线程,例如:

JS  util.dumpSchemas(["ontime"], "/home/opc/dump_zstd",{"threads": 32})

带有 Zstd 的 MySQL Shell

让我们从 MySQL Shell Dump 和 zstd(默认)开始:

JS  util.dumpSchemas(["ontime"], "/home/opc/dump_zstd",{"compression": "zstd"})

Duration: 00:01:49s
Schemas dumped: 1
Tables dumped: 1
Uncompressed data size: 34.64 GB
Compressed data size: 3.03 GB
Compression ratio: 11.4
Rows written: 105336666
Bytes written: 3.03 GB
Average uncompressed throughput: 317.36 MB/s
Average compressed throughput: 27.80 MB/s

带有 gzip 的 MySQL Shell

现在,我们尝试使用 gzip 作为压缩方法:

JS  util.dumpSchemas(["ontime"], "/home/opc/dump_gzip",{"compression": "gzip"})

Duration: 00:03:33s
Schemas dumped: 1
Tables dumped: 1
Uncompressed data size: 34.64 GB
Compressed data size: 4.22 GB
Compression ratio: 8.2
Rows written: 105336666
Bytes written: 4.22 GB
Average uncompressed throughput: 162.36 MB/s
Average compressed throughput: 19.76 MB/s

转储

正如我已经声称的,mysqldump (和 mysqlpump),不应再使用,但只是为了提供信息,mysqldump+gzip需要21m12sec,mysqldump+zstd需要15m20sec。

结果

如果我们检查转储的大小和速度,很明显带有 Zstd(压缩比为 11.1)的 MySQL Shell 是最佳选择:

[root@mysql-shell opc]# du -sh *
4.0G dump_gzip 2.9G dump_zstd
4.1G mysqldump_gzip.sql.gz 3.8G
mysqldump_zstd.sql.zst

[译文] MySQL Shell 转储和加载和压缩-2

[译文] MySQL Shell 转储和加载和压缩-3

正如我之前所写,MySQL Shell 机器的能力很重要。我们可以比较一下 CPU 使用率:

[译文] MySQL Shell 转储和加载和压缩-4
MySQL Shell 使用了实例的所有功能,但这在用于此类操作的专用实例上当然不是问题。

结论

默认情况下,MySQL Shell Dump & Load 实用程序提供了非常好的压缩算法,可以为您节省大量磁盘空间。此外,由于它的并行性,Load & Dump 比传统的mysqldump快得多。MySQL Shell甚至可以在单个表中并行转储和加载!

如您所见,我们从 47GB 开始,以 3GB 数据结束,压缩率为 93%!

如果您正在寻找逻辑转储解决方案,MySQL Shell 是最佳选择。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论