mysql集群表已满,解决方法?

时间:2011-04-12 20:20:37

标签: mysql cluster-computing partitioning

我们正试图将几个Tb放入MySQL Cluster,遗憾的是索引不适合内存。

有没有办法克服mysql的这种限制?

并行处理mysql进程范围操作吗?

我的数据在MYisam内部有一个3D点:(id x y z idkey someblob),有128个分区。由于内存限制,NDBCLuster无法加载数据。

索引遍历idkey(这是预先计算的peano-hilbert密钥)。总行数约为10 ^ 9.

谢谢阿曼。

修改 我的设置是2个datanodes 2 mysqld one mdm。 每个ndb 8Gb RAM,4核。

整个系统有30Tb Raid6 系统是linux Scientific LInux 6.0,集群是从源代码编译的7.1。

3 个答案:

答案 0 :(得分:0)

听起来MySQL不适合这项任务(对不起)。我会查看Tokyo Tyrant,也许是MongoDB或任何其他分布式键值存储系统。还有专门的商业产品。

MongoDB是able to swap out some of it's indexes to the HD。我想你的问题是MySQL不能这样做(我不是MySQL人)。

答案 1 :(得分:0)

也许您可以尝试修改config.ini文件。

DataMemory=15000M
IndexMemory=2560M

但如果两个值太高,您将遇到此错误: 由于位图页面未对齐而无法使用!!

所以我还在努力解决它。祝你好运。

答案 2 :(得分:0)

当我只加载数据库表的结构时,我遇到了同样的问题。这意味着DataMemoryIndexMemory在这里没有帮助。 表格的数量也未达到MaxNoOfTables的限制,因此也不是问题。 这里的解决方案是增加MaxNoOfOrderedIndexesMaxNoOfUniqueHashIndexes的值,它们反映了群集中可以拥有的最大索引数。因此,如果数据库中有许多索引,请尝试相应地增加这些变量。 当然,必须在更改生效后才能rolling restart生效!