2010-11-14 53 views
4

我有一个MySQL集群设置,有2个数据节点和1个管理节点。插入时,我们现在在我们的数据节点上发生错误。MySQL集群错误1114(HY000):表'用户'已满

ERROR 1114(HY000):表 '用户' 是全

请任何帮助表示赞赏,这是一个配置的问题,如果是哪个节点?每个节点都是Ubuntu 9服务器。

回答

5

答案就在这里: http://dev.mysql.com/doc/refman/5.0/en/faqs-mysql-cluster.html#qandaitem-B-10-1-13

简称:NDB引擎保持在RAM中的所有数据。如果你的节点有1GB的内存,并且你正在尝试加载4GB的数据库,那你几乎是不走运的。

有配置NDB使用磁盘来存储数据,使内存仅用于存储索引(他们仍然存储在RAM)的方式,这里是如何: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data-objects.html

如果你这样做然而,你会得到更低的表现。

+0

我有同样的问题,每个节点有48GB RAM和一个1.5G表(DataMemory 30G,IndexMemory 10G)。 “表已满”发生在160MB。我认为别的可能是错的。 – 2012-09-24 22:07:31

2

检查innodb_data_file_path设置 - 此错误表明您已超出该密钥中定义的可用空间。检查this link为InnoDB重新定义空间。

或者,您可能只是用尽了存储数据的分区上的磁盘空间。

+0

我们正在使用ENGINE = ndbcluster。我还需要innodb_data_file_path – 2010-11-14 20:20:32

+0

解决此问题是否已达成? – 2011-11-03 01:24:14

+0

这个答案是错误的。innodb_data_file_path仅与innodb存储引擎相关,对ndbcluster没有影响。详情请参阅下面的答案。 – Sergio 2012-03-19 17:42:51

2

万一有人经过这个问题,根本原因这个问题是MaxNoOfConcurrentOperations值,它应该相应地结合提升到行的表,预计容纳的人数。

以下应该是解决此问题的方法。

  1. 变化表初始创建的CREATE TABLE包括MAX_ROWS值是该行表有望保持双数。

  2. MaxNoOfConcurrentOperationsMaxNoOfConcurrentTransactions的值增加到高于群集中最大表的值。这可能是因为MySQL Cluster在大型表上应用任何操作时并行处理所有行。

0

我在加载数据库表结构时遇到了同样的错误。这意味着DataMemoryIndexMemory在这里没有帮助。 此外,表格数量没有达到MaxNoOfTables的限制,所以它也不是问题。 我在这里的解决方案是增加MaxNoOfOrderedIndexesMaxNoOfUniqueHashIndexes的值,这些值反映了群集中可以拥有的最大索引数。因此,如果数据库中有很多索引,请尝试相应地增加这些变量。 当然,必须在更改生效后执行[滚动重启] [1]!

我希望这可以帮助别人!

相关问题