【问题标题】:mysql cluster the table is full, workaround?mysql集群表已满,解决方法?
【发布时间】:2011-04-12 20:20:36
【问题描述】:

我们正在尝试将几个 Tb 放入 MySQL 集群,不幸的是索引不适合内存。

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

mysql进程范围操作有没有办法并行?

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

索引超过 idkey(这是预先计算的 peano-hilbert 键)。总行数约为 10^9。

谢谢阿曼。

编辑 我的设置是 2 个数据节点 2 个 mysqld 一个 mdm。 每个 ndb 8Gb RAM,4 核。

整个系统有30Tb Raid6。
系统为linux Scientific LINux 6.0,集群为7.1源码编译。

【问题讨论】:

  • 操作系统/硬件设置?您收到的错误消息 - 如果您提供这些消息会很有用。
  • 错误信息在标题中:“表'foo'已满”。

标签: mysql cluster-computing partitioning


【解决方案1】:

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

MongoDB 是able to swap out some of it's indexes to the HD。我猜你的问题是 MySQL 无法做到这一点(虽然我不是 MySQL 专家)。

【讨论】:

  • 是的,我们可能达到了 mysql 的限制。谢谢。
【解决方案2】:

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

DataMemory=15000M
IndexMemory=2560M

但是如果两个值太高,就会遇到这个bug: 由于位图页面未对齐,无法使用!!

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 1970-01-01
      • 2019-08-21
      • 2010-09-16
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      相关资源
      最近更新 更多