大家好,
在继续探索 Ceph® 12.2.1 (Luminous) 性能特性的过程中,我设置了一项测试,使用 MySQL® 数据库服务器和 Docker 容器来测试这个新版本的 Ceph。
测试的目的是衡量在使用 RBD 块设备作为数据库存储时,大型数据库的性能扩展情况。我还使用 Docker 容器来封装 MySQL 配置,以方便部署,因为 Docker 很酷。
Ceph 硬件:美光 IOP 优化的 Ceph 参考架构
我使用美光 IOP 优化的 Ceph 参考架构中的硬件进行测试:
我安装了最新的社区版 Ceph(Luminous 12.2.1),并针对每个美光 9100MAX 2.4TB NVMe® SSD 配置了 1 个 BlueStore OSD,同时还启用了 crc32c 校验和。
MySQL 服务器配置
在 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 服务器的情况下重复进行。
每分钟处理的交易量(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 存储节点时,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。