我们有一个8 GB的RAM(双核四核CPU)的现有专用盒子,我们的数据库已经增长了超过17 GB(对于我们的应用超过3个DB)。 我假设这是有足够的理由移动到一台拥有更多内存的机器上(把分片放在一边)。
新的盒子有48 GB的RAM。 我们有第二个专门的盒子,我们复制(主奴隶)我们的数据库以及。 我正在考虑设置我们的数据库的两个实例(运行他们自己的文件系统)并行运行在同一个盒子上,但不同的端口,并坚持在它前面的MySQL代理负载平衡我的读取stream量。
我的推理是我没有看到我们的每个DB都需要超过20-22 GB的RAM之前,碰到其他瓶颈。 是否将它们并行运行并对读取stream量进行负载平衡,以提供与使用两个专用盒子相当的性能?
你推理的基础是什么? 你期望什么瓶颈?
存储在数据库中的数据的大小不应该成为系统提供的RAM数量的基础。 如果它被加载到无法有效提供请求的地步,那就是你应该考虑的时候。 但是,不正确地调整查询,缺less索引以及configuration不当的MySQL实例将无法通过硬件升级完全解决。
在一个正确调优的实例中,如果遇到阻塞所有内存的瓶颈,多个实例将无法解决这个问题。 这可能是CPU瓶颈或潜在的磁盘I / O。 举一个例子,查看InnoDB内存使用情况 。
有一定的限制。 如MySQL 5.0上的MyISAM,即使在64位平台上,每个关键缓冲区也将被限制为4GB,因为它们是由32位整数引用的。
MySQL为每个连接创build一个线程。 因此,如果您没有运行64位平台,即使使用物理地址扩展 ,每个线程也将被限制为4GB。
如果要扩展读取请求,可以使用LVS负载均衡的多个数据库服务器。 我不会使用多个实例。
高性能的MySQL是一本很棒的书。 我build议你阅读它。