我们有一个 LAMP 盒,带有 2 个镜像 1 TB WD Black Caviar 磁盘,运行整个操作系统和 MySQL。8 GB/RAM,2 个四核 CPU。
我们的磁盘 I/O 负担很重,我一直在考虑建议在那里安装几个 SSD 驱动器/var/lib/mysql
,然后就完事了。我做了一些研究,我喜欢 Intel X25-M 160 GB 的价格点,但我读到过有关生产中 SSD 的相互矛盾的选项。
我们的内存约为 70 GB,主要是 MyISAM 表 (> 95%)。我们在生产期间 (8-5 pm) 进行大部分读取,在夜间 (12 am - 8 am) 进行大部分写入。
这里之前有一些关于生产中 SSD 的有用帖子,但我认为更好的帖子有点过时了(最好的一次是在2008年)。有没有关于 SSD 是否真的适合中型企业的最新反馈?如果没有,我该如何更好地扩展我们的数据库服务器?
答案1
斯蒂芬,你需要先深入挖掘。
- 如果您将 RAM 升级到更大的容量(例如 32 或 64GB),那么数据库的整个“热”(经常使用)子集是否适合放入 RAM 中?
- 您是否检查过您的数据库是否有正确的索引,您是否做过基本的 MySQL 性能审计?
关于消费级装备: 在服务器中使用像 WD 磁盘这样的消费级设备是一个备受争议的话题。就我个人而言,我认为这通常是一个错误的选择。但当然,不要使用像英特尔 X-25M(M 代表主流)这样的消费级 SSD。企业级 SSD 的耐用性和写入耐久性目标与消费级 SSD 截然不同(更好的磨损均衡,更多的空间过度配置)。
典型设置: 像您这样的服务器的典型磁盘设置可能是 4 个企业级 SAS 磁盘,采用 RAID10,使用合适的 RAID 控制器,控制器 RAM 缓存缓冲所有写入,并为缓存配备电池备份单元。这样的设备并不便宜,但它是一个经过验证的选择。
SSD 确实有优势,而且比 RAID 10 中的几个传统磁盘要快得多(特别是在大量随机读取时,假设热数据集不适合 RAM)。Percona 团队在博客中写道SSD 和 MySQL 的实际性能。
有人对 SSD 是否真的适合中型企业有更多最新的反馈吗?
确实如此,但在我看来,只有企业级 SSD 才是最好的,最好是已经生产了一段时间以修复错误的 SSD 系列。目前不错的选择是英特尔 X25-E (Extreme) 系列,4-6 个月后(当它们更成熟时)具有企业功能集的 Sandforce 25xx 系列硬盘。
如果没有,我该如何更好地扩展我们的数据库服务器?
也许您已经这样做了,但如果没有:我的第一个建议是找到一个 MySQL 数据库管理员,让他对您的系统进行性能审计。您很可能会发现,添加更多磁盘 I/O 并不是一个经济有效的解决方案。
答案2
我已经运行这些驱动器的 RAID 阵列,160GB 英特尔 G2 近一年了。这是一个由 12 台服务器组成的集群,目前每秒执行约 3500 次查询,但有大量的闲置容量,我曾将其设置为 6 台服务器,一切正常。如果你做研究和计算,它基本上可以归结为“五年或更长时间不要使用它们”,对我来说,我四舍五入并计划在一年后更换它们。考虑到它们节省的大量硬件和开发人员时间,我可以每季度更换一次,这仍然是值得的。
答案3
对于任何严重问题,您都应该选择企业级 SSD,例如 FusionIO 和 STEC 销售的设备。它们有关于何时运行维护(TRIM 等)的数据,并在出现问题时提供支持。我甚至看到 STEC SSD 被 HBA 取代。我猜想这里真正的问题是大多数供应商将 SSD 公开为块设备而不是闪存,而那里的控制器固件并不真正知道如何处理磁盘及其磁盘固件接口。只有经验才能说明问题。关于备份和 RAID 的常见情况也适用于 SSD。
但是由于您使用 MyISAM 作为存储后端,可靠性和一致性可能不是您的主要关注点,因此只需购买它们并看看会发生什么。
答案4
考虑升级到 Percona MySQL,它专门针对 SSD 的 I/O 功能进行了调整。只需切换到 SSD 驱动器即可带来一些改进,但 MySQL 无法充分利用 SSD 的功能 http://www.percona.com/software/percona-server/for-ssd/
查看他们的基准统计数据http://www.percona.com/docs/wiki/benchmark:ssd:start