设计工具
公司

Ceph RBD 上的大规模 MySQL® 数据库性能

Ryan Meredith | 2017 年 12 月

大家好,

在继续探索 Ceph® 12.2.1 (Luminous) 性能特性的过程中,我设置了一项测试,使用 MySQL® 数据库服务器和 Docker 容器来测试这个新版本的 Ceph。

测试的目的是衡量在使用 RBD 块设备作为数据库存储时,大型数据库的性能扩展情况。我还使用 Docker 容器来封装 MySQL 配置,以方便部署,因为 Docker 很酷。

Ceph 硬件:美光 IOP 优化的 Ceph 参考架构

我使用美光 IOP 优化的 Ceph 参考架构中的硬件进行测试:

Ceph 硬件:美光 IOP 优化的 Ceph 参考架构

我安装了最新的社区版 Ceph(Luminous 12.2.1),并针对每个美光 9100MAX 2.4TB NVMe® SSD 配置了 1 个 BlueStore OSD,同时还启用了 crc32c 校验和。

MySQL 服务器配置

MySQL 服务器(x10)

在 MySQL 服务器端,我使用 Docker 创建了 MySQL 5.7.19 映像并将其复制到 10 台 Supermicro 2028U 服务器上,这些服务器用作 MySQL 数据库服务器。

每台 MySQL 服务器上都有一个 1.5TB 的 RBD 映像,每个 RBD 映像存储一个类似 TPC-C 的 1TB MySQL 数据库。RBD 映像安装在 MySQL 服务器上,并按照每台 MySQL 服务器一个容器实例传递到 MySQL Docker 实例。

所有 MySQL 数据库文件都存储在 RBD 映像上,因此数据库实例为便携式,并受 Ceph 复制保护。

MySQL 的大小设置为可供每台服务器运行一个大型数据库,每个实例使用 224GB 的缓冲池。

美光 SSE TPC™-C 工具

我们的存储解决方案工程团队构建了一个类似于 TPC-C 的基准工具,该工具通过使用整个数据库作为活跃数据集来对存储施加压力。我们称之为“美光 SSE TPC-C 工具”,它安装在每个 Docker 实例中,并通过外部脚本同时在所有 MySQL 实例上启动。

MySQL 在 Ceph RBD 上的性能

我从 1 台 MySQL 服务器扩展到 10 台 MySQL 服务器,每台服务器都使用 Ceph RBD 映像进行 MySQL 存储。类似 TPC-C 的测试先运行 10 分钟的预热期(以达到稳定状态),然后进行了 30 分钟的正式测试。这项测试分别在 1 台 MySQL 服务器、5 台 MySQL 服务器和 10 台 MySQL 服务器的情况下重复进行。

Ceph RBD MySQL 性能
  每分钟处理的交易量(TPM) 平均 交易响应时间(毫秒) 99.9% 响应时间(毫秒)
1 台 MySQL 服务器 124,840 24 534 
5 台 MySQL 服务器 607,988 24 549 
10 台 MySQL 服务器 1,043,093 28  634 

MySQL 性能从 1 台 MySQL 服务器线性扩展到了 10 台服务器。在 10 台服务器上,修改后的 TPC-C 基准每分钟可处理 100 多万个交易,交易响应时间为 28 毫秒。

Ceph RBD MySQL 性能

在使用 Ceph 存储节点时,CPU 利用率通常是 Ceph 小块性能的限制因素。在这种情况下,MySQL 服务器的 CPU 利用率平均为 70%-80%,而 Ceph 存储节点的 CPU 利用率则从 7%(1 个客户端)上升到 64%(10 个客户端)。

添加 MySQL 客户端的开销更大,因为 Ceph 目前尚未得到充分利用。遗憾的是,我的 MySQL 服务器已经用尽,无法再继续增加客户端数量。根据这种扩展,我们可以合理地期望再增加 1 到 5 个 MySQL 客户端,并获得类似的结果。

是否希望了解更多信息?

我们正在撰写博客内容,以分享美光 SSE TPC-C 工具背后的方法,其中将更详细地介绍如何实现此处分享的 TPM 数字。通过这项成功的测试,Docker + MySQL 将成为我们用于 Ceph 和其他软件定义存储解决方案的标准测试。敬请期待!

对我们的测试或方法有其他疑问? 请在下方留言,或者发送电子邮件至 ssd@micron.com

美光存储解决方案架构总监

Ryan Meredith

Ryan Meredith 担任美光存储业务部门数据中心工作负载工程总监,负责测试新技术,助力美光在 AI 和 NVMe-oF/TCP 等领域,以及全闪存软件定义存储技术方面树立思想领袖地位并提升知名度。